Methods, systems, and apparatus for rateless polar coding

EP4681362A4Pending Publication Date: 2026-07-01HUAWEI TECH CO LTD

Patent Information

Authority / Receiving Office
EP · EP
Patent Type
Applications
Current Assignee / Owner
HUAWEI TECH CO LTD
Filing Date
2023-06-27
Publication Date
2026-07-01

Smart Images

  • Figure CN2023102653_26092024_PF_FP
    Figure CN2023102653_26092024_PF_FP
Patent Text Reader

Abstract

Input bits are encoded by a polar code to obtain encoded bits, and a first subset of the encoded bits corresponds to a first subset of bit indices that the polar code includes or provides. The bit indices include a first set of bit indices for values of the input bits and a second set of bit indices for a predetermined bit value. The first set of bit indices includes the first subset of bit indices and a second subset of bit indices. The values of the input bits include an input bit value placed on both a first bit index in the first subset and a second bit index in the second subset. The first bit index is based on a first sort order of the first subset of bit indices, and the second bit index is based on a second sort order of the second subset of bit indices.
Need to check novelty before this filing date? Find Prior Art

Description

Methods, Systems, and Apparatus for Rateless Polar CodingCROSS-REFERENCE TO RELATED APPLICATIONSThe present application is related to, and claims priority to, United States provisional patent application Serial No. 63 / 454,067, entitled "Methods, Systems, and Apparatus for Rateless Polar Coding" , filed on March 23, 2023; PCT Application No. PCT / CN2023 / 083350, entitled "Methods, Systems, and Apparatus for Non-Sequential Decoding of Polar Codes" , filed on March 23, 2023; PCT Application No. PCT / CN2023 / 083348, entitled "Methods, Systems, and Apparatus for Bit Value Placement in Polar Coding" , filed on March 23, 2023; and PCT Application No. PCT / CN2023 / 083345, entitled "Methods, Systems, and Apparatus for Encoded Bit Reduction in Polar Coding" , filed on March 23, 2023.The present application is related to the following Patent Cooperation Treaty (PCT) applications by the same applicant:PCT Application No. PCT / CN2023 / 097662, entitled "Methods, Systems, and Apparatus for Protograph-based Low Density Parity Check Coding" , filed on May 31, 2023; andPCT Application No. PCT / CN2023 / 092465, entitled "Methods, Systems, and Apparatus for Partial Code Rate Reduction in Polar Coding" , filed on May 6, 2023,and is related to the following United States provisional patent applications as well:United States provisional patent application Serial No. 63 / 454,066, entitled "Methods, Systems, and Apparatus for Partial Code Rate Reduction in Polar Coding" , filed on March 23, 2023;United States provisional patent application Serial No. 63 / 454,068, entitled "Methods, Systems, and Apparatus for Rateless Polar Coding and Low-complexity Decoding" , filed on March 23, 2023;United States provisional patent application Serial No. 63 / 454,069, entitled "Methods, Systems, and Apparatus for Rateless Polar Coding and Incremental Redundancy" , filed on March 23, 2023; andUnited States provisional patent application Serial No. 63 / 454,070, entitled "Methods, Systems, and Apparatus for Channel-dependent Error Correction Coding" , filed on March 23, 2023.The disclosures of the aforementioned applications are hereby incorporated by reference in their entireties.TECHNICAL FIELDThe present application relates to coding, and in particular to rateless polar coding.BACKGROUNDIn wireless communications, channel conditions are constantly changing at both fast and slow scale due to, for example, fading effects. Accordingly, channel coding has conventionally always been designed to adapt to channel conditions. Modulation coding scheme (MCS) adaptation, in which the modulation order and code length and code rate can be changed in real time, is a powerful approach to combat varying channel conditions.Adapting to channel conditions requires channel coding that can flexibly change code length and code rate in a fine-grained way, and at the same time achieve good error correction performance in all possible configurations. This fine-grained flexibility of channel codes remains a challenge.Probabilistic codes such as low density parity check (LDPC) codes, which are more like random codes, may be naturally suited for flexibility. However, algebraic codes such as Reed-Muller (RM) codes and Bose-Chaudhuri-Hocquenghem (BCH) codes, are not as flexible as probabilistic codes. This is because their inherent coding structures may be compromised when code length or rate changes. Polar codes exhibit features from both probabilistic codes and algebraic codes. As a result, polar codes have a level of flexibility that lies between probabilistic codes and algebraic codes.Rate matching, including techniques such as puncturing and shortening, are available to design rate-compatible polar codes, such as the polar codes for fifth generation (5G) new radio (NR) . However, the degree of flexibility is not enough to support more advanced features such as fine-grained incremental-redundancy hybrid automatic repeat request (IR-HARQ) , for example.Ratelessness can be important for rate compatibility, and refers to a coding approach in which an encoder does not need to determine a code rate before transmission of encoded data. Current polar code constructions need to know code length, which in turn impacts code rate, before transmission. Such code constructions therefore do not qualify as “rateless” . In existing polar coding schemes, code length is required during code construction, because it significantly affects the reliability of polarized subchannels and corresponding information subchannel selection.A more flexible channel coding approach is needed.SUMMARYThe present disclosure encompasses embodiments related to enabling or facilitating what is referred to herein primarily as rateless polar coding. Some embodiments support or provide ratelessness through a unified code construction for various code lengths and a more flexible approach to decoding. In addition to the improved flexibility generally sought by rateless codes, embodiments of the present disclosure may also exhibit reduced complexity, for example by reducing or eliminating a need for many independently constructed polar codes of various rates and lengths.According to an aspect of the present disclosure, a method involves encoding input bits by a polar code to obtain encoded bits, the polar code comprising a number of bit indices for placing bit values before encoding, the bit indices comprising: a first set of bit indices for placing values of the input bits and a second set of bit indices for placing a predetermined bit value, the first set of bit indices comprising a first subset of bit indices and a second subset of bit indices. The values of the input bits comprise an input bit value placed on both a first bit index in the first subset and a second bit index in the second subset. The first bit index is based on a first sort order of the first subset of bit indices, and the second bit index is based on a second sort order of the second subset of bit indices. Such a method may also involve outputting a first subset of the encoded bits corresponding to the first subset of bit indices.Another method involves receiving encoded bits encoded by a polar code, and decoding the encoded bits to obtain decoded input bits. The polar code comprises a number of bit indices for placing bit values before encoding, and the bit indices comprise a first set of bit indices for placing values of input bits and a second set of bit indices for placing a predetermined bit value. The first set of bit indices comprises a first subset of bit indices and a second subset of bit indices. The values of the input bits comprise an input bit value placed on both a first bit index in the first subset and a second bit index in the second subset, the first bit index is based on a first sort order of the first subset of bit indices, and the second bit index is based on a second sort order of the second subset of bit indices.An apparatus according to an embodiment includes an encoder and an interface. The encoder is for encoding input bits by a polar code to obtain encoded bits. The interface is coupled to the encoder, for outputting a first subset of the encoded bits corresponding to the first subset of bit indices. The polar code comprises a number of bit indices for placing bit values before encoding, the bit indices comprise a first set of bit indices for placing values of the input bits and a second set of bit indices for placing a predetermined bit value, and the first set of bit indices comprises a first subset of bit indices and a second subset of bit indices. The values of the input bits comprise an input bit value placed on both a first bit index in the first subset and a second bit index in the second subset, the first bit index is based on a first sort order of the first subset of bit indices, and the second bit index is based on a second sort order of the second subset of bit indices.According to another embodiment, an apparatus includes an interface for receiving encoded bits encoded by a polar code, and a decoder coupled to the interface, for decoding the encoded bits to obtain decoded input bits. As in other embodiments, the polar code comprises a number of bit indices for placing bit values before encoding, the bit indices comprise a first set of bit indices for placing values of the input bits and a second set of bit indices for placing a predetermined bit value, and the first set of bit indices comprises a first subset of bit indices and a second subset of bit indices. The values of the input bits comprise an input bit value placed on both a first bit index in the first subset and a second bit index in the second subset, the first bit index is based on a first sort order of the first subset of bit indices, and the second bit index is based on a second sort order of the second subset of bit indices.In other apparatus embodiments, an apparatus may include a processor configured to cause the apparatus to perform methods as disclosed herein.An apparatus may include a processor and a non-transitory computer readable storage medium that is coupled to the processor and stores programming for execution by the processor.A storage medium need not necessarily or only be implemented in or in conjunction with such an apparatus. A computer program product, for example, may be or include a non-transitory computer readable medium storing programming for execution by a processor.Programming stored by a computer readable storage medium may include instructions to, or to cause a processor to, perform, implement, support, or enable any of the methods disclosed herein.A system is also disclosed, and may include a first communication device configured to transmit a first subset of encoded bits encoded by a polar code. The polar code comprises a number of bit indices for placing bit values before encoding. The bit indices comprise: a first set of bit indices for placing values of input bits and a second set of bit indices for placing a predetermined bit value, the first set of bit indices comprising a first subset of bit indices corresponding to the first subset of the encoded bits and a second subset of bit indices. The values of the input bits comprise an input bit value placed on both a first bit index in the first subset and a second bit index in the second subset, the first bit index is based on a first sort order of the first subset of bit indices, and the second bit index is based on a second sort order of the second subset of bit indices. Such a system may also include a second communication device configured to receive the first subset of the encoded bits from the first communication device, and to decode the encoded bits to obtain decoded input bits.The present disclosure encompasses these and other aspects or embodiments.BRIEF DESCRIPTION OF THE DRAWINGSFor a more complete understanding of the present embodiments, and the advantages thereof, reference is now made, by way of example, to the following descriptions taken in conjunction with the accompanying drawings.Fig. 1 is a simplified schematic illustration of a communication system.Fig. 2 is a block diagram illustration of the example communication system in Fig. 1.Fig. 3 illustrates an example electronic device and examples of base stations.Fig. 4 illustrates units or modules in a device.Fig. 5 is a trellis graph illustrating an example of a polar code.Fig. 6 is a diagram illustrating puncturing and shortening with a cyclic buffer.Fig. 7 is a diagram illustrating code structure according to an embodiment.Fig. 8A is a diagram illustrating bit value placement on bit indices according to an embodiment.Fig. 8B is a diagram illustrating example bit index to label mappings.Fig. 8C is a diagram illustrating bit value placement on bit indices, using bit labeling according to an embodiment.Fig. 9A is a block diagram illustrating an f-function used in polar code decoding.Fig. 9B is a block diagram illustrating a g-function used in polar code decoding.Fig. 9C is a diagram illustrating processing of a “butterfly"in polar code decoding.Fig. 9D is a diagram illustrating a binary tree representation of successive cancellation decoding.Fig. 10 is a block diagram illustrating a binary tree representation of SC decoding of a length N=4 polar code.Fig. 11 is a block diagram illustrating a gr -function used in an embodiment of non-sequential polar code decoding.Fig. 12 is a block diagram illustrating an fr -function used in an embodiment of non-sequential polar code decoding.Fig. 13 is a diagram illustrating processing of a “butterfly" in an embodiment of non-sequential polar code decoding.Fig. 14 is a diagram illustrating a binary tree representation of an example of decoding scheduling.Fig. 15 is a diagram illustrating a binary tree representation of non-sequential SC decoding of a length N=4 polar code.Fig. 16 includes a table and a diagram of a trellis, illustrating differences between non-sequential and sequential decoding.Fig. 17 is a diagram of a trellis, illustrating an example of decoding that involves non-sequential polar code decoding.Fig. 18 is a diagram of a trellis, illustrating another example of decoding that involves non-sequential polar code decoding.Fig. 19 is a diagram of a trellis, illustrating a further example of decoding that involves non-sequential polar code decoding.Fig. 20 is a diagram of a trellis, illustrating yet another example of decoding that involves non-sequential polar code decoding.Fig. 21 is a diagram of a trellis, illustrating a bidirectional decoding example.Fig. 22 is a diagram of a trellis, illustrating another bidirectional decoding example.Fig. 23 is a diagram illustrating bit value placement on multiple bit indices according to an embodiment.Fig. 24 is a diagram illustrating bit value placement on multiple bit indices according to another embodiment.Fig. 25 is a diagram illustrating bit value placement on multiple bit indices on a segment-by-segment basis according to an embodiment.Fig. 26 is a diagram illustrating bit value placement or on multiple bit indices according to a reduced code rate embodiment.Fig. 27 is a diagram illustrating bit value placement on multiple bit indices according to a segment-by-segment reduced code rate embodiment.Fig. 28 is a diagram illustrating bit value placement on multiple bit indices according to another segment-by-segment reduced code rate embodiment.Fig. 29 includes diagrams illustrating capacity estimation.Fig. 30 includes diagrams illustrating decoding scheduling according to an embodiment.Fig. 31 is a diagram illustrating thresholds for decoding scheduling according to an embodiment.Fig. 32A illustrates a first example of decoding scheduling for a length-100 code.Fig. 32B illustrates a second example of decoding scheduling for a length-100 code.Fig. 33 is a diagram illustrating bit value placement on multiple bit indices according to another segment-by-segment reduced code rate embodiment.Fig. 34 is a diagram illustrating different starting points for evaluating sequential decoding performance according to an embodiment.Fig. 35 includes diagrams illustrating input bit values placed on v-code and u-code bit indices, and different decoding scheduling options for those input bit values according to one example.Fig. 36 includes diagrams illustrating input bit values placed on v-code and u-code bit indices, and different decoding scheduling options for those input bit values according to another example.Fig. 37 is a diagram illustrating progressive searching according to an embodiment.Fig. 38 is a diagram illustrating decoding scheduling options according to an embodiment.Fig. 39 illustrates an example of a rateless code and decoding scheduling according to an embodiment.Fig. 40 is a flow diagram illustrating more general example methods according to embodiments.Fig. 41 is a block diagram illustrating an apparatus according to an embodiment.Fig. 42 is a block diagram illustrating code construction and decoding scheduling consistent with the present disclosure, compared with a conventional approach to code construction.Fig. 43 includes plots illustrating error correction performance.DETAILED DESCRIPTIONFor illustrative purposes, specific example embodiments will now be explained in greater detail in conjunction with the figures.The embodiments set forth herein represent information sufficient to practice the claimed subject matter and illustrate ways of practicing such subject matter. Upon reading the following description in light of the accompanying figures, those of skill in the art will understand the concepts of the claimed subject matter and will recognize applications of these concepts not particularly addressed herein. It should be understood that these concepts and applications fall within the scope of the disclosure and the accompanying claims.Referring to Fig. 1, as an illustrative example without limitation, a simplified schematic illustration of a communication system is provided. The communication system 100 comprises a radio access network 120. The radio access network 120 may be a next generation (e.g., sixth generation, “6G, ” or later) radio access network, or a legacy (e.g., 5G, 4G, 3G or 2G) radio access network. One or more communication electric device (ED) 110a, 110b, 110c, 110d, 110e, 110f, 110g, 110h, 110i, 110j (generically referred to as 110) may be interconnected to one another or connected to one or more network nodes (170a, 170b, generically referred to as 170) in the radio access network 120. A core network 130 may be a part of the communication system and may be dependent or independent of the radio access technology used in the communication system 100. Also the communication system 100 comprises a public switched telephone network (PSTN) 140, the internet 150, and other networks 160.Fig. 2 illustrates an example communication system 100. In general, the communication system 100 enables multiple wireless or wired elements to communicate data and other content. The purpose of the communication system 100 may be to provide content, such as voice, data, video, signaling, and / or text, via broadcast, multicast and unicast, etc. The communication system 100 may operate by sharing resources, such as carrier spectrum bandwidth, between its constituent elements. The communication system 100 may include a terrestrial communication system and / or a non-terrestrial communication system. The communication system 100 may provide a wide range of communication services and applications (such as earth monitoring, remote sensing, passive sensing and positioning, navigation and tracking, autonomous delivery and mobility, etc. ) . The communication system 100 may provide a high degree of availability and robustness through a joint operation of a terrestrial communication system and a non-terrestrial communication system. For example, integrating a non-terrestrial communication system (or components thereof) into a terrestrial communication system can result in what may be considered a heterogeneous network comprising multiple layers. Compared to conventional communication networks, the heterogeneous network may achieve better overall performance through efficient multi-link joint operation, more flexible functionality sharing and faster physical layer link switching between terrestrial networks and non-terrestrial networks.The terrestrial communication system and the non-terrestrial communication system could be considered sub-systems of the communication system. In the example shown in Fig. 2, the communication system 100 includes electronic devices (ED) 110a, 110b, 110c, 110d (generically referred to as ED 110) , radio access networks (RANs) 120a, 120b, a non-terrestrial communication network 120c, a core network 130, a public switched telephone network (PSTN) 140, the Internet 150 and other networks 160. The RANs 120a, 120b include respective base stations (BSs) 170a, 170b, which may be generically referred to as terrestrial transmit and receive points (T-TRPs) 170a, 170b. The non-terrestrial communication network 120c includes an access node 172, which may be generically referred to as a non-terrestrial transmit and receive point (NT-TRP) 172.Any ED 110 may be alternatively or additionally configured to interface, access, or communicate with any T-TRP 170a, 170b and NT-TRP 172, the Internet 150, the core network 130, the PSTN 140, the other networks 160, or any combination of the preceding. In some examples, the ED 110a may communicate an uplink and / or downlink transmission over a terrestrial air interface 190a with T-TRP 170a. In some examples, the EDs 110a, 110b, 110c and 110d may also communicate directly with one another via one or more sidelink air interfaces 190b. In some examples, the ED 110d may communicate an uplink and / or downlink transmission over a non-terrestrial air interface 190c with NT-TRP 172.The air interfaces 190a and 190b may use similar communication technology, such as any suitable radio access technology. For example, the communication system 100 may implement one or more channel access methods, such as code division multiple access (CDMA) , space division multiple access (SDMA) , time division multiple access (TDMA) , frequency division multiple access (FDMA) , orthogonal FDMA (OFDMA) , Direct Fourier Transform spread OFDMA (DFT-OFDMA) or single-carrier FDMA (SC-FDMA) in the air interfaces 190a and 190b. The air interfaces 190a and 190b may utilize other higher dimension signal spaces, which may involve a combination of orthogonal and / or non-orthogonal dimensions.The non-terrestrial air interface 190c can enable communication between the ED 110d and one or multiple NT-TRPs 172 via a wireless link or simply a link. For some examples, the link is a dedicated connection for unicast transmission, a connection for broadcast transmission, or a connection between a group of EDs 110 and one or multiple NT-TRPs 172 for multicast transmission.The RANs 120a and 120b are in communication with the core network 130 to provide the EDs 110a, 110b, 110c with various services such as voice, data and other services. The RANs 120a and 120b and / or the core network 130 may be in direct or indirect communication with one or more other RANs (not shown) , which may or may not be directly served by core network 130 and may, or may not, employ the same radio access technology as RAN 120a, RAN 120b or both. The core network 130 may also serve as a gateway access between (i) the RANs 120a and 120b or the EDs 110a, 110b, 110c or both, and (ii) other networks (such as the PSTN 140, the Internet 150, and the other networks 160) . In addition, some or all of the EDs 110a, 110b, 110c may include functionality for communicating with different wireless networks over different wireless links using different wireless technologies and / or protocols. Instead of wireless communication (or in addition thereto) , the EDs 110a, 110b, 110c may communicate via wired communication channels to a service provider or switch (not shown) and to the Internet 150. The PSTN 140 may include circuit switched telephone networks for providing plain old telephone service (POTS) . The Internet 150 may include a network of computers and subnets (intranets) or both and incorporate protocols, such as Internet Protocol (IP) , Transmission Control Protocol (TCP) , User Datagram Protocol (UDP) . The EDs 110a, 110b, 110c may be multimode devices capable of operation according to multiple radio access technologies and may incorporate multiple transceivers necessary to support such.Fig. 3 illustrates another example of an ED 110 and a base station 170a, 170b and / or 170c. The ED 110 is used to connect persons, objects, machines, etc. The ED 110 may be widely used in various scenarios, for example, cellular communications, device-to-device (D2D) , vehicle to everything (V2X) , peer-to-peer (P2P) , machine-to-machine (M2M) , machine-type communications (MTC) , Internet of things (IOT) , virtual reality (VR) , augmented reality (AR) , mixed reality (MR) , metaverse, digital twin, industrial control, self-driving, remote medical, smart grid, smart furniture, smart office, smart wearable, smart transportation, smart city, drones, robots, remote sensing, passive sensing, positioning, navigation and tracking, autonomous delivery and mobility, etc.Each ED 110 represents any suitable end user device for wireless operation and may include such devices (or may be referred to) as a user equipment / device (UE) , a wireless transmit / receive unit (WTRU) , a mobile station, a fixed or mobile subscriber unit, a cellular telephone, a station (STA) , a machine type communication (MTC) device, a personal digital assistant (PDA) , a smartphone, a laptop, a computer, a tablet, a wireless sensor, a consumer electronics device, a smart book, a vehicle, a car, a truck, a bus, a train, or an IoT device, wearable devices such as a watch, head mounted equipment, a pair of glasses, an industrial device, or apparatus (e.g., communication module, modem, or chip) in the forgoing devices, among other possibilities. Future generation EDs 110 may be referred to using other terms. Each base station 170a and 170b is a T-TRP and will, hereafter, be referred to as T-TRP 170. Also shown in Fig. 3, a NT-TRP will hereafter be referred to as NT-TRP 172. Each ED 110 connected to the T-TRP 170 and / or the NT-TRP 172 can be dynamically or semi-statically turned-on (i.e., established, activated or enabled) , turned-off (i.e., released, deactivated or disabled) and / or configured in response to one of more of: connection availability; and connection necessity.The ED 110 includes a transmitter 201 and a receiver 203 coupled to one or more antennas 204. Only one antenna 204 is illustrated. One, some, or all of the antennas 204 may, alternatively, be panels. The transmitter 201 and the receiver 203 may be integrated, e.g., as a transceiver. The transceiver is configured to modulate data or other content for transmission by the at least one antenna 204 or by a network interface controller (NIC) . The transceiver may also be configured to demodulate data or other content received by the at least one antenna 204. Each transceiver includes any suitable structure for generating signals for wireless or wired transmission and / or processing signals received wirelessly or by wire. Each antenna 204 includes any suitable structure for transmitting and / or receiving wireless or wired signals.The ED 110 includes at least one memory 208. The memory 208 stores instructions and data used, generated, or collected by the ED 110. For example, the memory 208 could store software instructions or modules configured to implement some or all of the functionality and / or embodiments described herein and that are executed by one or more processing unit (s) (e.g., a processor 210) . Each memory 208 includes any suitable volatile and / or non-volatile storage and retrieval device (s) . Any suitable type of memory may be used, such as random access memory (RAM) , read only memory (ROM) , hard disk, optical disc, subscriber identity module (SIM) card, memory stick, secure digital (SD) memory card, on-processor cache and the like.The ED 110 may further include one or more input / output devices (not shown) or interfaces (such as a wired interface to the Internet 150 in Fig. 1) . The input / output devices permit interaction with a user or other devices in the network. Each input / output device includes any suitable structure for providing information to, or receiving information from, a user, such as through operation as a speaker, a microphone, a keypad, a keyboard, a display or a touch screen, including network interface communications.The ED 110 includes the processor 210 for performing operations including those operations related to preparing a transmission for uplink transmission to the NT-TRP 172 and / or the T-TRP 170, those operations related to processing downlink transmissions received from the NT-TRP 172 and / or the T-TRP 170, and those operations related to processing sidelink transmission to and from another ED 110. Processing operations related to preparing a transmission for uplink transmission may include operations such as encoding, modulating, transmit beamforming and generating symbols for transmission. Processing operations related to processing downlink transmissions may include operations such as receive beamforming, demodulating and decoding received symbols. Depending upon the embodiment, a downlink transmission may be received by the receiver 203, possibly using receive beamforming, and the processor 210 may extract signaling from the downlink transmission (e.g., by detecting and / or decoding the signaling) . An example of signaling may be a reference signal transmitted by the NT-TRP 172 and / or by the T-TRP 170. In some embodiments, the processor 210 implements the transmit beamforming and / or the receive beamforming based on the indication of beam direction, e.g., beam angle information (BAI) , received from the T-TRP 170. In some embodiments, the processor 210 may perform operations relating to network access (e.g., initial access) and / or downlink synchronization, such as operations relating to detecting a synchronization sequence, decoding and obtaining the system information, etc. In some embodiments, the processor 210 may perform channel estimation, e.g., using a reference signal received from the NT-TRP 172 and / or from the T-TRP 170.Although not illustrated, the processor 210 may form part of the transmitter 201 and / or part of the receiver 203. Although not illustrated, the memory 208 may form part of the processor 210.The processor 210, the processing components of the transmitter 201 and the processing components of the receiver 203 may each be implemented by the same or different one or more processors that are configured to execute instructions stored in a memory (e.g., in the memory 208) . Alternatively, some or all of the processor 210, the processing components of the transmitter 201 and the processing components of the receiver 203 may each be implemented using dedicated circuitry, such as a programmed field-programmable gate array (FPGA) , a graphical processing unit (GPU) , a Central Processing Unit (CPU) or an application-specific integrated circuit (ASIC) .The T-TRP 170 may be known by other names in some implementations, such as a base station, a base transceiver station (BTS) , a radio base station, a network node, a network device, a device on the network side, a transmit / receive node, a Node B, an evolved NodeB (eNodeB or eNB) , a Home eNodeB, a next Generation NodeB (gNB) , a transmission point (TP) , a site controller, an access point (AP) , a wireless router, a relay station, a terrestrial node, a terrestrial network device, a terrestrial base station, a base band unit (BBU) , a remote radio unit (RRU) , an active antenna unit (AAU) , a remote radio head (RRH) , a central unit (CU) , a distributed unit (DU) , a positioning node, among other possibilities. The T-TRP 170 may be a macro BS, a pico BS, a relay node, a donor node, or the like, or combinations thereof. The T-TRP 170 may refer to the forgoing devices or refer to apparatus (e.g., a communication module, a modem or a chip) in the forgoing devices.In some embodiments, the parts of the T-TRP 170 may be distributed. For example, some of the modules of the T-TRP 170 may be located remote from the equipment that houses the antennas 256 for the T-TRP 170, and may be coupled to the equipment that houses the antennas 256 over a communication link (not shown) sometimes known as front haul, such as common public radio interface (CPRI) . Therefore, in some embodiments, the term T-TRP 170 may also refer to modules on the network side that perform processing operations, such as determining the location of the ED 110, resource allocation (scheduling) , message generation, and encoding / decoding, and that are not necessarily part of the equipment that houses the antennas 256 of the T-TRP 170. The modules may also be coupled to other T-TRPs. In some embodiments, the T-TRP 170 may actually be a plurality of T-TRPs that are operating together to serve the ED 110, e.g., through the use of coordinated multipoint transmissions.The T-TRP 170 includes at least one transmitter 252 and at least one receiver 254 coupled to one or more antennas 256. Only one antenna 256 is illustrated. One, some, or all of the antennas 256 may, alternatively, be panels. The transmitter 252 and the receiver 254 may be integrated as a transceiver. The T-TRP 170 further includes a processor 260 for performing operations including those related to: preparing a transmission for downlink transmission to the ED 110; processing an uplink transmission received from the ED 110; preparing a transmission for backhaul transmission to the NT-TRP 172; and processing a transmission received over backhaul from the NT-TRP 172. Processing operations related to preparing a transmission for downlink or backhaul transmission may include operations such as encoding, modulating, precoding (e.g., multiple input multiple output (MIMO) precoding) , transmit beamforming and generating symbols for transmission. Processing operations related to processing received transmissions in the uplink or over backhaul may include operations such as receive beamforming, demodulating received symbols and decoding received symbols. The processor 260 may also perform operations relating to network access (e.g., initial access) and / or downlink synchronization, such as generating the content of synchronization signal blocks (SSBs) , generating the system information, etc. In some embodiments, the processor 260 also generates an indication of beam direction, e.g., BAI, which may be scheduled for transmission by a scheduler 253. The processor 260 performs other network-side processing operations described herein, such as determining the location of the ED 110, determining where to deploy the NT-TRP 172, etc. In some embodiments, the processor 260 may generate signaling, e.g., to configure one or more parameters of the ED 110 and / or one or more parameters of the NT-TRP 172. Any signaling generated by the processor 260 is sent by the transmitter 252. Note that “signaling, ” as used herein, may alternatively be called control signaling. Dynamic signaling may be transmitted in a control channel, e.g., a physical downlink control channel (PDCCH) and static, or semi-static, higher layer signaling may be included in a packet transmitted in a data channel, e.g., in a physical downlink shared channel (PDSCH) .The scheduler 253 may be coupled to the processor 260. The scheduler 253 may be included within, or operated separately from, the T-TRP 170. The scheduler 253 may schedule uplink, downlink and / or backhaul transmissions, including issuing scheduling grants and / or configuring scheduling-free ( “configured grant” ) resources. The T-TRP 170 further includes a memory 258 for storing information and data. The memory 258 stores instructions and data used, generated, or collected by the T-TRP 170. For example, the memory 258 could store software instructions or modules configured to implement some or all of the functionality and / or embodiments described herein and that are executed by the processor 260.Although not illustrated, the processor 260 may form part of the transmitter 252 and / or part of the receiver 254. Also, although not illustrated, the processor 260 may implement the scheduler 253. Although not illustrated, the memory 258 may form part of the processor 260.The processor 260, the scheduler 253, the processing components of the transmitter 252 and the processing components of the receiver 254 may each be implemented by the same, or different one of, one or more processors that are configured to execute instructions stored in a memory, e.g., in the memory 258. Alternatively, some or all of the processor 260, the scheduler 253, the processing components of the transmitter 252 and the processing components of the receiver 254 may be implemented using dedicated circuitry, such as a FPGA, a GPU or an ASIC.Notably, the NT-TRP 172 is illustrated as a drone only as an example, the NT-TRP 172 may be implemented in any suitable non-terrestrial form, such as high altitude platforms, satellite, high altitude platform as international mobile telecommunication base stations and unmanned aerial vehicles, which forms will be discussed hereinafter. Also, the NT-TRP 172 may be known by other names in some implementations, such as a non-terrestrial node, a non-terrestrial network device, or a non-terrestrial base station. The NT-TRP 172 includes a transmitter 272 and a receiver 274 coupled to one or more antennas 280. Only one antenna 280 is illustrated. One, some, or all of the antennas may alternatively be panels. The transmitter 272 and the receiver 274 may be integrated as a transceiver. The NT-TRP 172 further includes a processor 276 for performing operations including those related to: preparing a transmission for downlink transmission to the ED 110; processing an uplink transmission received from the ED 110; preparing a transmission for backhaul transmission to T-TRP 170; and processing a transmission received over backhaul from the T-TRP 170. Processing operations related to preparing a transmission for downlink or backhaul transmission may include operations such as encoding, modulating, precoding (e.g., MIMO precoding) , transmit beamforming and generating symbols for transmission. Processing operations related to processing received transmissions in the uplink or over backhaul may include operations such as receive beamforming, demodulating received signals and decoding received symbols. In some embodiments, the processor 276 implements the transmit beamforming and / or receive beamforming based on beam direction information (e.g., BAI) received from the T-TRP 170. In some embodiments, the processor 276 may generate signaling, e.g., to configure one or more parameters of the ED 110. In some embodiments, the NT-TRP 172 implements physical layer processing but does not implement higher layer functions such as functions at the medium access control (MAC) or radio link control (RLC) layer. As this is only an example, more generally, the NT-TRP 172 may implement higher layer functions in addition to physical layer processing.The NT-TRP 172 further includes a memory 278 for storing information and data. Although not illustrated, the processor 276 may form part of the transmitter 272 and / or part of the receiver 274. Although not illustrated, the memory 278 may form part of the processor 276.The processor 276, the processing components of the transmitter 272 and the processing components of the receiver 274 may each be implemented by the same or different one or more processors that are configured to execute instructions stored in a memory, e.g., in the memory 278. Alternatively, some or all of the processor 276, the processing components of the transmitter 272 and the processing components of the receiver 274 may be implemented using dedicated circuitry, such as a programmed FPGA, a GPU, a CPU or an ASIC. In some embodiments, the NT-TRP 172 may actually be a plurality of NT-TRPs that are operating together to serve the ED 110, e.g., through coordinated multipoint transmissions.The T-TRP 170, the NT-TRP 172, and / or the ED 110 may include other components, but these have been omitted for the sake of clarity.One or more steps of the embodiment methods provided herein may be performed by corresponding units or modules, according to Fig. 4. Fig. 4 illustrates units or modules in a device, such as in the ED 110, in the T-TRP 170 or in the NT-TRP 172. For example, a signal may be transmitted by a transmitting unit or by a transmitting module. A signal may be received by a receiving unit or by a receiving module. A signal may be processed by a processing unit or by a processing module. Other steps may be performed by an artificial intelligence (AI) or machine learning (ML) module. The respective units or modules may be implemented using hardware, one or more components or devices that execute software, or a combination thereof. For instance, one or more of the units or modules may be an integrated circuit, such as a programmed FPGA, a GPU, a CPU or an ASIC. It will be appreciated that where the modules are implemented using software for execution by a processor, for example, the modules may be retrieved by a processor, in whole or part as needed, individually or together for processing, in single or multiple instances, and that the modules themselves may include instructions for further deployment and instantiation.Additional details regarding the EDs 110, the T-TRP 170 and the NT-TRP 172 are known to those of skill in the art. As such, these details are omitted here.Having considered communications more generally above, attention will now turn to particular example embodiments.Successive cancellation (SC) is the basic decoding algorithm for polar codes, according to which all frozen bits and information bits are decoded sequentially, bit by bit. Preceding bits are always decoded first, before decoding a current bit.Successive cancellation list (SCL) is an enhanced decoding algorithm for polar codes, where multiple (L) SC decoding instances are executed. Each instance is called a “decoding path” . When decoding each binary bit, both “0” and “1” branches are extended to each path, creating 2L paths. Then, all 2L paths are compared, where the most likely L paths are kept, and the least likely L paths are discarded (or pruned) . The path extension and pruning operations are performed during decoding every information bit, until all information bits are decoded. At last, the most likely path is selected as the decoding output.CRC-aided successive cancellation list (CA-SCL) decoding works almost the same as SCL, except that in the last step, the most likely path that passes CRC check is selected as the decoding output.Parity-check successive cancellation list (PC-SCL) decoding also works almost the same as SCL, except that when decoding parity-check (PC) bits, the parity check value of associated preceding bits is used as a bit decision result. PC bits are in addition to frozen bits and information bits.Polar codes are linear block codes. For a polar code of length N, its generator matrix is GN, and its encoding process iswhereis a binary input vector, andis the binary code vector. The N×N binary generator matrixwhereis the polarization kernel matrix, is Kronecker product, and n=log2 N.With K information bits to be encoded into N code bits and K<N, a code rate of R=K / N<1 is obtained. This implies only part ofis used to carry information bits, and the remining bits ofare known as frozen bits. The information bit set (or information set) may be denoted by I, and the frozen bit set (or frozen set) may be denoted by F. Sometimes, there is an additional PC bit set, denoted by P. The frozen bits are known and usually set to all zeros before decoding, so they do not carry any information. The PC bits are parity-check bits of a subset of information bits, and therefore are known once the associated information bits are decoded. Decoding of polar codes attempts to recover all information bits.Code length M may, but might not always, be a power of 2, in which case M<N. In practice, puncturing and shortening are used to reduce the number of transmitted code bits from N to M. For convenience, N is referred to as mother code length, and M is referred to as code length herein. In particular, punctured bits are untransmitted bits that are unknown to a decoder, but shortened bits are untransmitted bits that are known to the decoder (usually all zeros) .Fig. 5 is a trellis graph illustrating an example of a polar code with N=8 and K=4. Each “butterfly” in the graph is a polarization, and one butterfly is shown by way of example at the right in Fig. 5, forIn the example shown, the unshaded circles at the left represent the information set I= {u4, u6, u7, u8} , and the shaded circles represent the frozen set F= {u1, u2, u3, u5} .The input vector u at the left in Fig. 5 and the code vector x at the right in Fig. 5 each include a number of bit positions. The bit positions in the input vector are indexed by respective bit indices, and bit values are placed on or at those bit indices or bit positions for encoding. These bit indices or bit positions are also sometimes referred to as bit channels or subchannels. Placing bit values on bit indices as disclosed herein may also be referred to in other ways, such as placing bits or bit values on or at bit indices, bit positions, bit channels, or subchannels; or assigning bit values or bits to bit indices, bit positions, bit channels, or subchannels. Other terminology may be used to express how bit values or bits are provided as inputs to encoding. The present disclosure refers primarily to placement of bit values on bit indices, but other terminology may equivalently be used to convey the same concept.In this way, a polar code may be considered as providing or comprising bit indices, bit positions, bit channels, or subchannels for bit values. Those bit indices, bit positions, bit channels, or subchannels are not necessarily only for bits that are to be encoded. For example, the u vector elements u1, . . . uN are also referenced in decoding, and therefore bit values that are decoded may similarly be associated with bit indices, bit positions, bit channels, or subchannels.On the right side in Fig. 5, the code vector x also includes a number of elements that are in or at bit positions or bit indices. A bit value on the i-th bit index in the input vector u has some effect on multiple code bits in the code vector x, but the bit value on the i-th bit index in the input vector u is the primary contributor to the value of the code bit on the corresponding i-th bit index in the code vector x. In this sense, for a polar code, input vector bit indices or bit positions may be considered to correspond to, or be associated with or related to, code vector bit indices or bit positions. This is the case for polar codes, and there may be different input  / code bit correspondence, relationships, or associations for other types of codes.Regarding encoding, the process of encoding may be expressed in any of various ways. For example, encoding may be described as encoding bits to obtain encoded bits or to generate encoded bits. The above-referenced encoding processfor example, may be expressed as generating or otherwise obtaining an encoding input (the input vector u in this example) that includes bits or bit values for encoding, to obtain or generate a number of encoded bits (the code vector x in this example) .The bit values of elements in the input vector u, from an encoding perspective, may be referred to as values or bits to be encoded, or as values or bits for encoding, for example. Blocks of bits or bit values for encoding are also sometimes referred to as code blocks. The bit values of elements in the code vector x may be referred to as encoded bits, coded bits, or code bits, and a block of such bits may be referred to as a codeword, for example.From a decoding perspective, decoding may be referred to as decoding encoded bits, a codeword, or a code, or as decoding, obtaining, or recovering bits or bit values (that were encoded) , from the encoded bits, a codeword, or a code, for example. The bit values of elements in the vector u, in the context of decoding, may be referred to as decoded or recovered bits or bit values.Rate-compatible polar coding is a key technology for wireless applications. One key characteristic of polar codes is that the actual reliability (or bit correct probability) of polarized subchannels is governed by channel output quality of all code bits. In the case of rate matching, some of the channel outputs are completely unknown (for punctured bits) or completely known (for shortened bits, which are not transmitted but are known) . As a result, actual subchannel reliability will change dramatically according to any puncture patterns (which may also or instead be referred to as puncturing patterns) and / or shorten patterns (which may also or instead be referred to as shortening patterns) . By definition of polar codes, the K information bits should be placed on the K most reliable polarized subchannels. If not, significant performance degradation will be observed.In the 5G NR standard (see 3rd Generation Partnership Project (3GPP) , “Multiplexing and channel coding, ” 3GPP 38.212 V. 15.3.0, 2018) , a combination of puncturing, shortening, and repetition is used together with a fixed reliability sequence to balance performance and complexity. In particular, a subblock-wise interleaving, which may also be referred to as interlacing, is used for both puncturing and shortening. The puncturing and shortening patterns are complementary and, together, form a symmetric (with respect to a polar code sequence) rate matching scheme.With mother code length N, and code length M, the specific rate matching scheme used in 5G NR is as follows:Repetition, when M>N;Puncturing, when K / M≤7 / 16;Shortening, when K / M>7 / 16.Subblock-wise interleaving is performed before puncturing and shortening in the 5G NR standard. An interleaver partitions the length-N mother code into 32 subblocks of size N / 32 and interleaves them. Puncturing is performed from the first bit of a codeword, also referred to herein as a code bit, a coded bit, or an encoded bit, and shortening is performed from the last code bit. A rate matching module is efficiently implemented through a cyclic buffer. All mother code bits are placed in the cyclic buffer, puncturing is done by selecting the bits in clockwise order, and shortening is done by selecting bits in counter-clockwise order.Fig. 6 is a diagram illustrating puncturing and shortening with a cyclic buffer. At 602 in Fig. 6, code bits of a codeword are illustrated in a vertical column, with punctured and shortened bits as shown. At 604, Fig. 6 illustrates a cyclic buffer, represented by a circle shape, and reading of code bits with no puncturing or shortening. The next two circles illustrate, respectively, cyclic buffers with dashed lines representing puncturing from the beginning of the buffer at 606 and shortening from the end of the buffer at 608.In an incremental freezing HARQ method, transmissions of multiple short codewords are supported. See B. Li, D. Tse, K. Chen and H. Shen, "Capacity-achieving rateless polar codes, " 2016 IEEE International Symposium on Information Theory (ISIT) , 2016, pp. 46-50, doi: 10.1109 / ISIT. 2016.7541258. As more short codes are transmitted, the overall code length increases, and the overall code rate decreases.In the first transmission, an (M1, K) polar code is constructed, encoded and transmitted. The code rate is R1=K / M1, and is usually determined such that R1<C1, where C1 is the channel capacity of the first transmission. In the case of faded channel or inaccurate channel estimation, it may be that R1>C1, and decoding will fail and a second transmission is required. In the second transmission, K2 least reliable information bits are selected from the K information bits in the first transmission. In practice, K2 is chosen according to the estimated channel capacity of the second transmission. An (M2, K2) polar code is constructed accordingly and encoded and transmitted. However, if R2>C2, decoding will fail again and a third transmission is required. The third transmission, and possibly further subsequent transmissions, are constructed similarly. For example, code length may be the same for up to four transmissions (M1=M2=M3=M4=16) , with K1=12, K2=6, K3=4, and K4=2.At the receiver side, it is expected that a decoder will always decode at least the last received codeword, because it has the lowest code rate and thus the best chance of successful decoding. After the last transmission is correctly decoded, the corresponding information bits in all previous transmissions (e.g., K1, K2, K3, etc. ) become known; therefore, these known information bits can be treated as frozen bits (i.e., bits with known values) during subsequent decoding of each previous transmission. This process is repeated as more codewords are decoded, until all K bits in the first transmission are decoded. The term “incremental freezing” refers additionally freezing some information bits in previous transmissions once a later transmitted codeword is decoded.In 5G NR, PC polar codes were adopted to increase the minimum code distance of the original polar codes. Values of PC bits are determined by their preceding information bits, and specifically, binary linear combinations of a subset of preceding information bits. In one proposal of PC polar codes to support IR-HARQ, PC bits are for coupling multiple retransmissions into a longer polar code with extra coding gain. See M. -M. Zhao, G. Zhang, C. Xu, H. Zhang, R. Li and J. Wang, "An Adaptive IR-HARQ Scheme for Polar Codes by Polarizing Matrix Extension, " in IEEE Communications Letters, vol. 22, no. 7, pp. 1306-1309, July 2018, doi: 10.1109 / LCOMM. 2018.2825370.PC functions currently used for IR-HARQ are also a special case, where some information bits are copied from an initial transmitted code block to a retransmitted code block. This one-to-one parity checking between the two shorter code blocks effectively couples the two code blocks into a longer code block.Consider an example, for an initial transmission of an (M1=8, K=5) polar code, where {u0, u1, u2, u3, u4} is the information set, and {u5, u6, u7} is the frozen set. In this example, bit indices are in decreasing order of reliability. In a first retransmission, four additional code bits are transmitted. These four bits are coupled with the initially transmitted 8 bits to form an (M2=12, K=5) polar code. The coupling is achieved by copying the value of u4 to u8 during encoding, thus generating a PC function u4 + u8 = 0 (or equivalently u8 = u4) . The largest index in this PC function corresponds to the PC bit (here u8) . During decoding, u4 is decoded as an information bit, while u8 is decoded as a PC bit using u8 = u4. In this example, {u0, u1, u2, u3, u8} is the information set, {u4} is the PC set, and {u5, u6, u7, u9, u10, u11} is the frozen set. In a second retransmission, four more additional code bits c12, c13, c14, c15 are transmitted to form an (M3=16, K=5) polar code, but in this second retransmission no new PC bits are generated.These existing rate matching and PC polar coding schemes can provide some flexibility. However, these schemes do not provide so-called “rateless” coding.Rateless codes are channel codes that encode K source bits into a potentially very long encoded bit sequence with length Nmax. A transmitter may incrementally transmit the bit sequence, until a receiver can successfully decode the source bits, and instructs the transmitter to stop further transmissions. The number of actually transmitted and received code bits may be denoted by M, and M < Nmax. Thus, the code rate is R=K / M. In practice, the code rate R depends on code length M. The code length M depends on dynamic channel quality, because generally, a lower quality channel will require more transmissions and lower code rate for successful decoding. The term “rateless” comes from the fact that an encoder does not determine the code rate R before transmission. In other words, the code rate R is not fixed in advance, but adapts to channel state. When channel quality is high, R is higher; and when channel quality is low, R is lower.In 5G polar code rate matching, for example, the code length M must be known before code construction. First, an encoder will determine whether to puncture or shorten the code according to M, and then the information set I is selected according to the puncturing / shortening pattern (s) . This fixing of code length M before code construction violates the definition is ratelessness. Moreover, the 5G polar code rate matching scheme does not support multiple transmissions.The incremental freezing IF-HARQ scheme referenced above supports multiple transmissions, but both the code length Mi and information length Ki in each retransmission need to be known at the transmitter before constructing retransmitted codewords. Specifically, the values of Mi and Ki for a retransmission are determined by a channel estimation result for that transmission. Correspondingly, an (Mi, Ki) polar code must be constructed for each retransmission. Again, this approach involves predetermination of code rates and violates the above definition of ratelessness. Another drawback is its inferior coding gain compared to that of a long code. For example, the combined performance of the first two codewords (M, K) and (M2, K2) is still worse than a long codeword (M + M2, K) .The above-referenced proposal of PC polar codes to support IR-HARQ also supports multiple transmissions, but the code length Mi in each retransmission needs to be known at the transmitter before constructing codewords, which also violates the definition of ratelessness. Specifically, the value of Mi determines the number of copied bits (or PC bits) in each retransmission. Moreover, the performance after two retransmissions is inferior to a long codeword (M + M2, K) .Some embodiments disclosed herein are directed to addressing a technical problem related to providing more flexible polar codes. 5G NR, for example, adopts a rate-dependent rate matching scheme. However, its flexibility is undermined by shortening. If a rateless polar code is to be constructed, where the code length and code rate are flexible, then shortened bits under one code length M1 cannot be used for transmission under another code length M2. This is due to the fact that shortened bits are known to the receiver and do not carry any additional information about the source bits. On the other hand, punctured bits are unknown to the receiver, and thus can potentially carry additional information about the source bits. By transmitting or otherwise outputting more punctured bits, the overall code rate is effectively reduced, leading to higher decoding reliability. Therefore, instead of seeking rate compatibility with hybrid puncturing and shortening, it may be preferable to disable shortening but seek rate compatibility with novel check-type methods that involve input bit values that are placed on multiple bit indices and in this sense are related to each other. This is illustrative of how rate compatibility may be achieved through operations before polar transformation, which may provide more flexibility on how to use code bits, rather than after polar transformation.Another technical problem that may be addressed by some embodiments herein is how to achieve true ratelessness. In some embodiments, true ratelessness involves the following features:Construction of an (Nmax, K) mother code, which contains all (M, K) codes for all K ≤ M ≤ Nmax.Truly rateless codewords are nested. That is, an (M1, K) codeword is always nested within an (M2, K) codeword for any M1 < M2.Any (M, K) code extracted from the (Nmax, K) mother code provides the same coding gain as an individually constructed (M, K) code, which is optimized for length M only.There is no need to reconstruct codes, either according to code length Mi or channel condition, before each subsequent transmission or output of encoded bits.Designing polar codes that provide such features for true ratelessness remains a challenge.Embodiments disclosed herein may integrate aspects of one or more of the related applications referenced above. For example, some embodiments may integrate features related to non-sequential decoding for polar codes, placement of input bit values on multiple bit indices, and partial code rate reduction.Specific code construction embodiments may encompass aspects of input bit value placement and partial code rate reduction. Embodiments related to decoding may encompass aspects of non-sequential decoding, which may also or instead be referred to as scheduled decoding, such as searching for effective or optimal scheduling order for decoding and representation of decoding scheduling sequences.Embodiments are described herein by way of example with reference primarily to output by transmitting encoded bits. Outputting encoded bits may involve transmitting encoded bits, or encoded bits that are output may be transmitted, but it should be appreciated that not all embodiments necessarily involve transmitting encoded bits. Features that are disclosed herein in the context of transmitting encoded bits may be applied more generally to outputting encoded bits.Regarding code construction, some embodiments adopt sequential puncturing or transmission of a mother code of length N, according to which the first P code bits are punctured, and the last M code bits are transmitted. In such embodiments, P+M=N and the transmitted encoded bits have bit indices [P+1 …N] .The transmitted encoded bits may be divided or partitioned into two codes, referred to herein as a v-code and a u-code. The v-code consists of the {P+1 …N / 2} -th bits on bit indices {P+1 …N / 2} , and has length N / 2-P. The v-code may be a punctured polar code or, when N / 2-P is a power of 2, the v-code can be a non-punctured polar code.The u-code consists of the {N / 2+1 …N} -th bits on bit indices {N / 2+1 …N} , has a length N / 2, and is a non-punctured polar code.The information (or non-frozen) set including bit indices for placement of K input bit values is then determined. K bit indices {N / 2+1 …N} may be selected according to a pre-defined ordered sequence of length N / 2. An ordered sequence indicates bit indices according to rank, such as reliability, and the K bit indices of highest rank, such as highest reliability, are selected. For ease of reference, this bit index set that includes selected bit indices is denoted by Iu. If K>N / 2, then all N / 2 bit indices in the reliability ordered sequence are selected for the information set Iu. In this case, there are not enough bit indices in the u-code to accommodate all of the K input bit values. In order to facilitate input bit value mapping and placement as described in further detail herein, an additional K-N / 2 bit indices may be selected as “virtual” information bit indices for Iu. These additional bit indices are referred to as virtual information bit indices for Iu because they are not actually in the u-code. Including these virtual information bit indices in Iu, however, may facilitate code construction.Virtual bit indices may be referred to as dummy bit indices, tracking bit indices, or by some other name. These bit indies are not bit indices on which input bit values are placed for encoding, but may be useful for tracking how many, and which, information bit indices in Iu are available for mapping and placement of input bit values that are also mapped to and placed on bit indices in the v-code, as explained in further detail below.The bit indices and ranking for virtual bit indices may be assigned on condition that virtual bit indices have a lower rank for bit value placement, based on reliability for example, than other bit indices in Iu and are distinguishable from other bit indices in Iu. For example, the additional K-N / 2 virtual information bit indices may be assigned negative reliability values or other rank values {- (K-N / 2) , - (K-N / 2-1) … -2, -1} , and bit indices {- (K-N / 2) , - (K-N / 2-1) …-2, -1} , respectively. Negative reliability values or other rank values in this example illustrate one way in which virtual bit indices may be have lower reliability or rank than other bit indices in Iu with positive reliability values or other rank values for placement of input bit values. Similarly, negative bit indices in this example illustrate one way in which in which virtual bit indices may be distinguished from other bit indices in Iu.The information set for the v-code is selected based on the K highest rank (most reliable, for example) bit indices in {1 …N} , according to a pre-defined ordered sequence of bit indices in order of rank, of length N. The set of the K highest rank bit indices in {1 …N} is denoted herein by Iuv. The information (non-frozen) set of bit indices in {1 …N / 2} is denoted herein by Iv= {i: i∈Iuv and i≤ N / 2} .The full information (or non-frozen) set may be expressed as follows:I = Iu∪Iuv = [Iv, Iu] .The N bit indices of a mother code are either frozen bit indices or information bit indices in some embodiments. A predetermined bit value such as 0 is placed on the frozen bit indices in the frozen set, and values of input bits are placed on information bit indices in the information set. A value of an input bit may be placed on one, or on more than one, of the information bit indices. In bit labeling embodiments, for example, bit values are assigned to labels, and labels are associated with one (one-to-one mapping) or multiple (one-to-many mapping) bit indices. A label of 0 may be used as a label for the predetermined bit value and frozen bit indices, and labels of {1, 2 …K} may be used as labels for values of input bits and information bit indices, for example. Other labels, and embodiments in which labels are not used to place bit values on bit indices, are also possible.Selection of bit indices for placing values of input bits, which may involve labeling in some embodiments, determines the code construction.To achieve ratelessness, bit index selection, and labeling if used, should not depend on the code length M that is actually transmitted, but may depend on the number of input bits, also referred to as information length, K. In this way, code construction and subsequent encoding can be done without knowing the transmitted code length M in advance. Examples of bit value placement, including labeling in some embodiments, are described in further detail herein, at least below.Encoding can be done once, to obtain a length-N mother codeword. For example, values of the K information bits are placed on the information bit indices, using K labels in some embodiments. The bit value of any input bit may be placed on multiple information bit indices, by assigning the same label to multiple bit indices for example. Therefore, one input bit may in effect be placed on multiple bit indices. In a labeling embodiment, the multiple bit indices are associated with the same label. This may be considered as implicitly establishing a type of check function, where the bit value on a first bit index can be checked by the same bit value that is also placed on one or more other bit indices. Such placement of the same input bit value on two or more bit indices enables the decoded input bit value to be known for all of those bit indices after a bit value is decoded for any one of the bit indices.Rate matching to obtain an arbitrary (M, K) code for all K≤M≤N may then involve transmitting the last M code bits of the mother codeword. The first N-M code bits are not transmitted, and may be punctured for example.Code structure according to an embodiment is illustrated by way of example in Fig. 7.710 in Fig. 7 represents a polar transformation matrix (or generator matrix) of a length-N mother polar code. 720 in Fig. 7 represents the generator matrix of the transmitted part, and the generator matrices of the transmitted v-code and u-code are also extracted at the bottom of Fig. 7 for illustration.In the example shown, N = 32. Suppose that bit index selection for the information set is based on reliability, the most reliable K=16 bit indices in {N / 2+1 …N} are Iu = {17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32} , and the most reliable K bit indices in {1 …N} are Iuv = {8, 12, 14, 15, 16, 20, 22, 23, 24, 26, 27, 28, 29, 30, 31, 32} . The information set in {1 …N / 2} is Iv = {8, 12, 14, 15, 16} . The full information set is thenI = Iu∪Iuv = [Iv, Iu] = {8, 12, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32} .For bit value placement, in an embodiment the following labels may be used for the 32 bit indices:l=[0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 4, 0, 3, 2, 1, 1, 2, 3, 6, 4, 7, 8, 12, 5, 9, 10, 13, 11, 14, 15, 16] .Before encoding, the values of the K=16 input bits [a1, a2 …a16] are assigned to labels 1, 2 …16, respectively, in this example. In particular, with the labels as indicated above, the values of the bits [a1, a2, a3, a4, a5] , associated with labels 1, 2, 3, 4, 5, respectively, are each placed on two bit indices. The frozen bit indices (with label 0 in the example above) are assigned a value known to the decoder, such as 0. Bit value placement using labels is just one illustrative example of how bit values may be placed on bit indices. The present disclosure is not in any way limited to bit labeling.The information vector after information / frozen bit value placement on bit indices is as follows:u=[0, 0, 0, 0, 0, 0, 0, a5, 0, 0, 0, a4, 0, a3, a2, a1, a1, a2, a3, a6, a4, a7, a8, a12, a5, a9, a10, a13, a11, a14, a15, a16] .Encoding is performed by multiplying the information vector u by the polarization matrix, G32 in this example, to obtain the code vector x = u·G32.This is an example of a rateless code with K=16 and arbitrary length 16≤M≤32, because bit value placement and encoding are not dependent upon M. The length-M transmitted code includes encoded bits on encoded bit indices [P+1, P+2, . . . 32] based on [uP+1, uP+2 …u32] , where P=32-M in this example. The v-code in this example includes [uP+1, uP+2 …u16] on bit indices [P+1, P+2, . . . 16] , and the u-code in this example includes [u17, u18, …u32] on bit indices [17, 18, . .. 32] .The code construction in the above example is illustrated in Table 1 below. Table entries in the first and third rows, in italic, are bit indices for placement of values for encoding, and table entries in the second and fourth rows, in bold, are labels.Table 1: Example Code ConstructionAlthough Table 1 illustrates code construction in a labeling embodiment, placement of bit values on bit indices need not involve labels, and the labels in Table 1 may be substituted with input bit values to illustrate code construction.The example above describes construction of a (K≤M≤N, K) rateless polar code, where and is the ceiling operation. This general example can be extended to arbitrary Nmax→∞. The extension is straightforward. For example, a current code length N may be doubled to 2N, and then the (1) information / frozen bit index selection and (2) bit value placement, by labeling for example, can be performed using the same rules or procedures as outlined herein. Very long codes may be obtained by repeating this doubling, selection, and placement process, which may also or instead be referred to as recursively extending or increasing code length. For example, some embodiments herein may refer to an upper set and a lower set of bit indices, or one u-code and one v-code. However, there can be multiple upper sets and lower sets as code length is recursively extended or increased. A code of length Ni including a v-code and u-code can be viewed or treated as a u-code and further extended to length 2Ni , and so on, for progressively longer code lengths.Placement of bit values on bit indices may be implemented or supported in any of various ways, which may or may not involve bit labeling. Fig. 8A is a diagram illustrating bit value placement on bit indices according to one embodiment. Bit value placement may involve or be based on a bit index (or bit position) to bit value mapping, which may also be referred to as a bit value to bit index or bit position mapping, or as a mapping between a bit index or bit position and a bit value. Such a mapping may be either a one-to-one mapping or a many-to-one mapping.A one-to-one mapping may be defined by or expressed as i→p, where i is a bit index of a bit position, in the input vector shown in Fig. 8A for example, and p is an index of a bit value, in a sequence of bit values such as the input sequence shown in Fig. 8A. For example, an input vector bit ui with a one-to-one mapping to a bit value may be a frozen bit if there is only one frozen bit, or an information bit for an input bit value that is not to be placed on any other bit indices. In this sense the one-to-one mapped information bit is an information bit that is not checked by any other information bit in the input vector. This type of mapping may be referred to as a direct mapping between a bit value and a bit index, in that the mapping does not use a label. The mapping N→K in Fig. 8A is an example of a direct one-to-one mapping.A many-to-one mapping may be defined by or expressed as {i1, i2, i3 …} →p, where i1, i2, i3 …are bit indices of bit positions, and p is an index of the bit value to which these bit indices are mapped. For example, the mapping {i, j, k} →p is consistent with a check-type function or relationship ui=uj=uk. Among {i, j, k} , if the bit uj is decoded first, then the other bits ui and uk take the same decoded value of uj, and in this sense ui and uk are information bits but may be considered a form of check bit. A many-to-one bit index to bit value mapping (or one-to-many bit value to bit index mapping) is a direct mapping, between a bit value and multiple bit indices or vice versa. The mappings for input bit values a1 and a2 in Fig. 8A are examples of a direct one-to-many or many-to-one mapping.In Fig. 8A, input sequence bit values include the input bit values (ai) . The input bit sequence represents an input block to channel coding, and bit values in that bit sequence are denoted by a1, a2, . . ., aK, where K is the number of bits to be encoded. The bit values in the input bit sequence, and a predetermined bit value for frozen bits (0 in the example shown) are placed on bit indices in the binary input vector u1, u2, . . ., uN, , upon which polar coding is applied, based on the bit index  / value index mapping shown at the right in Fig. 8A. The arrows between the input sequence bit values and the input vector bit values are intended to represent bit value placement according to which the input vector bit values are set to the input sequence bit values. Placement of a predetermined bit value of 0 for frozen bits is also shown in Fig. 8A for completeness.The example shown in Fig. 8A illustrates the predetermined frozen bit value 0 and the input bit values a1,a2, . . ., aK, being placed on bit indices in the binary input vector u1, u2, . . ., uN, . Using notation introduced above, ui=ap if i→p for a one-to-one mapping or {…i …} →p for a many-to-one mapping.Bit value placement of a predetermined value of 0 for all frozen bits and input bit values for a sequence of input bits {1, 2 …K} , can be described by a mapping sequence. With i∈ {1, 2 …N} denoting bit indices of bit positions for encoding, and l∈ {0, 1 …K} denoting bit value indices for the predetermined value of 0 for frozen bits and input bit values a1, a2, . . ., aK, a one-to-one mapping i→p can be denoted by l (ui) =p, a many-to-one mapping {i, j, k} →p can be denoted by l (ui) =l (uj) =l (uk) =p, and the mapping sequence can be denoted by l (u1) , l (u2) , . . ., l (uN) , where N is mother code length or a total number of bit indices. For the example shown in Fig. 8A, a mapping sequence may be described as {0, 0, 0, . . ., 1, 2, ..., 1, 2, 3, . .., K} .Bit value placement may involve labels in some embodiments. A bit index (or bit position) to label mapping (which may also be referred to as a label to bit index or bit position mapping, or as a mapping between a bit index or bit position and a label) may, like a bit index  / bit value mapping, be either a one-to-one mapping or a many-to-one mapping.A one-to-one mapping using labels may be defined by or expressed as i→p, where i is a bit index of a bit position as above, but p is an index of a label. For example, an input vector bit ui with a one-to-one mapping to a label may be a frozen bit if there is only one frozen bit, or an information bit that does not share a label with, and in a sense is not checked by, any other information bit.A many-to-one mapping using labels may be defined by or expressed as {i1, i2, i3 …} →p, where i1, i2, i3 …are bit indices of bit positions as above, and p is an index of the label to which these bit indices are mapped. For example, the mapping {i, j, k} →p is consistent with a check-type function or relationship ui=uj=uk. Among {i, j, k} , if the bit uj is decoded first, then the other bits ui and uk take the same decoded value of uj, and in this sense ui and uk are information bits but may be considered a form of check bit.Fig. 8B is a block diagram illustrating example bit index to label mappings. In Fig. 8B, bit index to label mapping is represented with bit indices to the left and label indices to the right. The top mapping is a one-to-one mapping and the bottom mapping is a many-to-one mapping. Label mapping is optional, and bit indices may instead be directly mapped to bit values or indices, rather than via labels. Use of label mapping, rather than direct mapping, may be preferable in some embodiments. For example, when described in text in a communication standard or specification, bit values of input bits are not known, and labels may be used to represent the input bit values. As a result, bit mapping and bit value placement may be more conveniently described through the use of labels as a form of reference for the bit values.Fig. 8C is a block diagram illustrating bit value placement on bit indices, using bit labeling according to an embodiment. In Fig. 8C, input sequence bit values include the input data bit values (ai) , and a predetermined bit value of 0 is also illustrated for completeness. Bit values of a label sequence, with individual elements in such a sequence being labels that are placed on bit positions or assigned to bits in an input vector for encoding, are also shown in Fig. 8C. The arrows between the bit values and the label sequence bit values represent both assignment of the labels and setting or assignment of bit values to the labels. The labels include labels that are respectively uniquely assigned to and thereby associated with bit positions in the input sequence, and a frozen bit label as well in the example shown. For encoding a sequence of input bits, the labels are set to the bit values of the input bits. This may equivalently be referred to as the labels being assigned to input bits or input sequence bits (or values) , or as the input bits or input sequence bits (or values) being assigned to the labels. The relationship between each one of the K input bits and its assigned label is a unique, in that each input bit has only one uniquely assigned label, and no individual label is assigned to any other input bit. This may be considered another form of one-to-one mapping, between input bit positions (or bits) in an input bit sequence and respective labels.The input bit sequence in Fig. 8C represents an input block to channel coding, and bit values in that bit sequence are denoted by a1, a2, . . ., aK, where K is the number of bits to be encoded. The label sequence is denoted by l0, l1, l2, . . ., lK, where each label l1, l2, . . ., lK is associated with an input bit position and input bit that is to be encoded, or with a predefined frozen bit value in the case of label l0. The predetermined bit value and the bit values in the input bit sequence are placed on bit indices in the binary input vector u1, u2, . . ., uN, upon which polar coding is applied, based on the labels and the bit index  / label mapping shown at the right in Fig. 8C. The arrows between the label sequence bit values and the input vector bit values are intended to represent both assignment of the labels to input vector bit positions, and bit value placement on bit indices according to which the input vector bit values are set to the predetermined bit value or the input sequence bit values.In the bit placement examples shown in Figs. 8A and 8C, (without and with labels, respectively) the predetermined frozen bit value 0 and the input bit values a1, a2, . . ., aK are placed on bit indices. With labels, the bit values are assigned as values of the label sequence l0, l1, l2, . . ., lK, where l0=0 (or any predefined frozen bit value) , and lp=ap for p = 1, 2 …K. Then, the bit values 0, a1, a2, . . ., aK, optionally having been assigned as bit values to the labels, are placed on bit indices in the binary input vector u1, u2, . . ., uN. Using notation introduced above, ui=ap (or lp in a labeling embodiment) if i→p for one-to-one mapping or {…i …} →p for many-to-one mapping.A mapping sequence that describes bit value placement may include bit value indices as in preceding examples, or labels in label embodiments. A one-to-one mapping i→p can be denoted by l (ui) =p, a many-to-one mapping {i, j, k} →p can be denoted by l (ui) =l (uj) =l (uk) =p, and the mapping sequence can be denoted by l (u1) , l (u2) , . . ., l (uN) , where N is mother code length or a total number of bit indices. For the example shown in Fig. 8C, a mapping sequence may be described as {l0, l0, l0, . . ., l1, l2, . . ., l1, l2, l3, . .., lK} .A mapping sequence, whether expressed or defined using bit value indices or labels, could be defined in a communication standard or specification, or generated according to a procedure specified by such a standard or specification, for example. Online generation of such a mapping sequence is one possible option.Figs. 8A, 8B, and 8C and the foregoing descriptions thereof provide examples of how bit values may be placed on one or more bit indices. Embodiments disclosed herein are not dependent upon any particular approach to bit value placement. For example, embodiments may, but need not necessarily, involve bit labeling.The present disclosure also encompasses embodiments that may support non-sequential decoding.Polar codes are conventionally decoded by SC and its variants. Conventionally, all SC-based polar decoders follow sequential order of bits while performing successive cancellation. Withdenoting an input vector that includes information, frozen, and possibly PC bit indices, respectively, the sequential decoding order is u1, u2, ..., uN.Before a hard decision (i.e., 0 or 1) can be made on a bit value for each information and frozen bit (and PC bit if necessary) , received signals corresponding to the code bits are processed in the “butterflies” using the so-called f-function and g-function. The received signals may be known as soft information, which is typically expressed as log-likelihood ratios (LLRs) . Soft information is a non-binary value representing the receiver’s level of confidence, or probability, of a given bit value being a 0 or a 1. Fig. 9A is a block diagram illustrating the f-function used in polar code decoding and Fig. 9B is a block diagram illustrating the g-function used in polar code decoding.As shown in Fig. 9A, the f-function receives two LLR inputs Lin1 and Lin2, and outputs an LLR Lout. In a simplified LLR-based algorithm, the f-function is as follows:As shown in Fig. 9B, the g-function receives three inputs, including two LLRs Lin1, Lin2 and a binary variable b, and outputs an LLR Lout. In a simplified LLR-based algorithm, the g-function is as follows:In the context of SC decoding, it is useful to consider the processing of one single “butterfly", and Fig. 9C is a block diagram illustrating such processing.In a first step represented at the left in Fig. 9C, the f-function is performed to calculate the LLR of u1 usingthe two LLRs on the right side of the butterfly, and this is expressed as L’1 = f (L1, L2) in the drawing. If u1 is an information bit, then its value will be obtained by hard decision, as a value 0 for positive LLR and value 1 for negative LLR, or equivalently, u1= (1-sign (L’1) )  / 2, where sign (L) is the sign function. Otherwise if u1 is a frozen bit or a PC bit, then its value is pre-known (for a frozen bit) or calculated using preceding information bit values (for a PC bit) . This applies to all bits from u1 to uN.In a second step represented in the middle in Fig. 9C, the g-function is performed to calculate the LLR of u2using the two LLRs on the right side of the butterfly and the hard decision u1, expressed as L’2 = g (L1, L2, u1) in the drawing,followed by a hard decision to obtain u2 based on the calculated LLR. The hard decision is expressed as u2= (1-sign (L’2) )  / 2 in Fig. 9C. As shown, the first bit u1 is always decoded before the second bit u2, and more generally each bit is decoded sequentially or in order, from u1 to uN.In a third step represented at the right in Fig. 9C, with hard decisions on both u1 and u2 having been made, it is straightforward to further recover the bits x1 and x2 as shown, byand x2 = u2. This step is called the “re-encoding” step.For convenience, a binary tree is often used to simplify the representation of an SC decoder or SC decoding, and Fig. 9D is a block diagram illustrating such a binary tree representation. In a binary tree, a root node at the top of each view in Fig. 9D represents the nodes on the right side of the butterfly (or a trellis) , and the leaf nodes at the bottom represent the nodes on the left side of the butterfly (or a trellis) . As can be seen, SC decoding becomes a depth-first binary tree traversal.For illustrative purposes, an example of code length N=4 is provided below, and it is believed that decoding of all code lengths can be readily understood based on that example. Fig. 10 is a block diagram illustrating a binary tree representation of SC decoding of a length N=4 polar code.In Fig. 10, a “butterfly” is represented by a “fork” in the binary tree. Each edge represents either a set of f-functions or a set of g-functions. The order of executing the f / g-function exactly corresponds to the edge traversing order, represented in Fig. 10 by the dashed-line arrows, in the binary tree. After all bits on the left side of a butterfly have been decoded (hard decided) , represented by the dot-dash-line arrows in Fig. 10, the bits on the right side of the butterfly will be recovered immediately. Following these rules, the SC decoding of any mother code length N=8, 16, 32, 64 …can be derived.This type of sequential SC decoding order has been used since the introduction of polar codes, and all SC-based decoders such as SCL, CA-SCL and PC-SCL follow the sequential order. Sequential SC-based decoding is believed to be the most common type of decoding for polar codes.Error propagation can be an issue in SC decoding. When bit decoding order is fixed, a very unreliable information bit can become a bottleneck of an overall code block. For example, if the decision of the i-th bit is incorrect, there is a very high probability that all subsequent information bits with index j>i will be incorrect. In this scenario, if it were possible to avoid decoding the i-th bit first, then there is a much higher probability that the j-th bit will be correctly decoded; however, conventional sequential SC decoding is not capable of avoiding the decoding of the i-th bit to increase the probability of correctly decoding the j-th bit.SC decoding is also not flexible to channel dynamics. In some polar code implementations such as the NR standard, the probability of successful decoding for each bit (also sometimes referred to as “reliability” ) is pre-estimated and specified in the communication standard. In the NR standard, the reliability order is obtained by assuming an Additive White Gaussian Noise (AWGN) channel and is indicated in an ordered sequence in which bit indices are ordered according to their respective reliabilities. The K most reliable bit indices are selected as information bit indices for carrying payload data (also referred to herein as input bits) . However, as described herein, channel conditions in wireless communications are constantly changing. As a result, the actual reliability of each bit index may be different from the pre-estimated, fixed reliability specified in the standard. In the case where the actual order of reliabilities (based on actual channel conditions) of given bit indices differs from the specified order of reliabilities, the standardized polar code implementation may not place all information bits into the actual highest reliability bit indices. If the same sequential decoding order is always used as in conventional sequential SC decoding, then the best performance might not be achieved.Reliability may be considered a measure or indication of how likely it is that a bit value will be correctly decoded or decodable at a decoder. Other related terms or descriptors include capacity, probability or likelihood of error, and probability or likelihood of decoding without error. Reliability is primarily used herein, but features disclosed herein in the context of reliability may also or instead apply in the context of capacity, probability or likelihood of error, probability or likelihood of decoding without error, or other measures or indicators of rank or preference between bit indices for the purpose of placing input bit values for encoding.Conventional sequential SC decoding also does not support parallel decoding. This is logical because sequential decoding is serial in nature, and all preceding bits have to be decoded before decoding a current bit.Some embodiments disclosed herein relate to a type of SC decoding, but with arbitrary bit decoding order. For non-sequential decoding, conventional bit decision and LLR updating rules described above no longer apply. New rules and new decoding approaches for non-sequential decoding order are disclosed herein.Code construction, or polarization, under arbitrary bit decoding order is also considered herein. Decoding order may have a significant impact on the actual reliability of each bit index. Polarization or reliability as currently defined in communications standards, for example, is fixed and is based on and only holds for conventional sequential decoding. Code construction of polar codes that are appropriate for arbitrary bit decoding order may be based on estimates of actual reliability of each bit index under a new decoding order. The K most reliable bit indices, in terms of estimated actual reliability for non-sequential decoding order, may be different from the most reliable bit indices according to pre-estimated, fixed reliabilities for conventional polar codes (including the 5G polar codes) with conventional sequential SC decoding.Thus, some embodiments herein involve decoding and decoders. Multiple decoding orders are possible, and this is also referenced herein as decoding scheduling. Respective rules and operations for different decoding orders are provided by way of example.Construction of codes may be based at least in part on decoding-dependent rank metrics such as reliability metrics that are derived for specific decoding orders. Bit indices for encoding may be selected as information bit indices for placement of input bit values or frozen bit indices for placement of a predetermined bit value, for example, based on rank.These encoding and decoding aspects complement each other. With arbitrary decoding order, decoding scheduling can be determined based on specific channel conditions, and code construction enables bit indices in an information set to be determined based on a specific decoding scheduling.Non-sequential decoding may be implemented or deployed in conjunction with other features disclosed herein.Considering the general concept of decoding scheduling, a bit value for any bit, denoted uj for ease of reference, among N bits u1, u2, . . ., uN can be decoded without its preceding bit (s) , ui|i<j, having been decoded.For a certain bit uj or a set of consecutive bits, if a hard decision is not to be performed because the capacity of the bit (s) is insufficient for example, then the bit or set of consecutive bits can be skipped. Such skipping of one or more bits, in the context of polar codes, refers to not processing the butterflies associated with that bit or that set of consecutive bits. This means that all associated f-functions, g-functions, LLR updates and re-encoding steps are not performed, or equivalently on a binary tree, if all bits in a subtree are skipped, then that subtree will not be visited for now. Skipped bits may be decoded later when conditions are suitable for decoding, for example when capacity is sufficient.In theory, N-M punctured code bits, on the right-hand side of a trellis such as the example shown in Fig. 5, will have a more significant impact on N-M bit indices, on the left-hand side of the trellis. For example, puncturing N-M code bits degrades the actual reliability of N-M bit indices, and may degrade those bit indices to zero capacity. If the code bits x1, x2, . . ., xi are punctured for example, then bit indices corresponding to u1, u2, . . ., ui have zero capacity. In some embodiments these bit indices are skipped for decoding and postponed hard decisions are made for bit values on these bit indices, or bits at these bit indices are not decoded at all according to some embodiments disclosed herein. A decision on a bit with 0 information has 0.5 probability of being correct. In other words, generally a hard decision should not be made unless there is confidence that the decision will be correct.Another general guideline for determining decoding order is to decode a bit at a bit index corresponding to higher capacity (or lower bit error probability) first. In the above example, the decoding of a bit with zero-capacity may be postponed or cancelled entirely. In practice, there may be many bits or sets of consecutive bits, also referred to herein as blocks of bits, at bit indices with positive but very low capacity. It may be preferable to decode such bits later in a decoding process as well. For example, suppose that there are two blocks b1 and b2 with respective code rates Rb1 and Rb2 and respective finite length channel capacities Cb1 and Cb2. If Rb1> Cb1 and Rb2< Cb2, then it is preferable to decode block b2 before decoding block b1. Here, capacity may be defined differently from existing polar codes, as described in further detail below.To describe code construction and a corresponding decoding process, a new type of bit is defined and used in some embodiments, in addition to existing frozen bits and information bits. This new type of bit can be given and referenced by any of various names, such as a null bit, an empty bit, a zero-capacity bit, a low-capacity bit, a useless bit, an irrelevant bit, a non-decision bit, an invalid bit, etc. Herein, “null bit” is used simply for ease of reference. It should be appreciated, however, that any of these example names, and / or others, may be used to refer to a bit with such low capacity that it is not to be decoded.Table 2 below compares existing bit types including information bits and frozen bits to the new bit type, null bit.Table 2: Bit Type ComparisonsAlthough null bits may have zero-capacity, in some embodiments bits with very low reliability or capacity can be treated as null bits. In the context of bit indices, a set of bit indices for null bits is in addition to an information set, which is a set of bit indices for values of input bits, and a frozen set, which is a set of bit indices for a predetermined bit value.As described above, before a hard decision can be made, received signals corresponding to code bits are processed. Conventional sequential decoding uses two functions, including the f-function and g-function referenced above. Functions or operations in addition to the above-referenced f-function and g-function are disclosed herein and referenced as fr -function and gr -function. These functions are illustrated in block diagram form in Figs. 11 and 12. Fig. 11 is a block diagram illustrating the gr -function used in an embodiment of non-sequential polar code decoding, and Fig. 12 is a block diagram illustrating the fr -function used in an embodiment of non-sequential polar code decoding.As shown in Fig. 11, the example gr -function receives an input LLR Lin2, and outputs an LLR Lout. The gr -function is as follows in some embodiments:As shown in Fig. 12, the example fr -function receives two inputs, including an LLR Lin1 and a binary variable b, and outputs an LLR Lout. The fr -function is as follows in some embodiments:The examples in Figs. 11 and 12 are specific to functions in the LLR domain, and are illustrative of functions that may be used in some embodiments. In practice, such functions may be implemented in other domains, such as a probability domain or a likelihood domain. Non-sequential decoding is not in any way limited to the LLR examples for the LLR domain.More generally, an fr -function has two inputs. A first input is soft information such as a probability value, a likelihood value, or an LLR, and a second input is a binary value. The first input value is associated with the first bit (upper right bit in a butterfly) , and the binary value is associated with the second bit (lower right bit in the butterfly) . The gr -function has one input, which may be soft information such as a probability value, a likelihood value, or an LLR, associated with the second bit (lower right bit in the butterfly) . These functions are different from the conventional functions, in that the conventional f-function has two inputs, and the conventional g-function has three inputs.The gr -function and the fr -function may be expressed in more general form, in the context of decoding encoded bits in non-sequential decoding order based on the following functions gr and fr:Fnout, g_r=gr (Fnin2)Fnout, f_r=fr (Fnin1, b)whereFnout, g_r and Fnout, f_r respectively denote outputs associated with each of the functions; Fnin1 and Fnin2 denote function inputs associated with respective positions (upper right and lower right in a butterfly) in a trellis graph for the polar code; andb denotes a binary variable associated with the second bit (lower right bit in the butterfly) .In these general forms of the gr -function and the fr -function, the " Fn"function inputs and outputs may be probability values, likelihood values, or LLRs, for example, and the preceding examples illustrate the more specific form of each function in the LLR domain.Whether to perform the f-function and the g-function, or the new fr -function and the new gr -function, depends on decoding order. With reference to Fig. 13, which is a diagram illustrating processing of a “butterfly" in an embodiment of non-sequential polar code decoding, if the lower-left bit (u2 in the example shown) in the butterfly is to be decoded first, then the new fr-function and the new gr-function are used instead of the f-function and the g-function. In this example and others herein, LLR domain functions are used for illustrative purposes, but in these and other examples and embodiments, functions in other domains may be used.In the first step, Step 1 in Fig. 13, the new gr -function is performed to calculate the LLR of u2 using the LLRon the right side of the butterfly, expressed as L’2 = gr (L2) = L2 in the drawing. If u2 is an information bit, then its value will be obtained by hard decision, of value 0 for positive LLR and value 1 for negative LLR. If u2 is a frozen bit, then its bit value is already known. As shown, x2 is equal to u2, and therefore x2 can be immediately set to x2 = u2.Step 2 in Fig. 13 illustrates a second step, in which the new fr -function is performed to calculate the LLR ofu1 using the LLR on the right side of the butterfly and the hard decision on u2, which is expressed in the drawing as L’1 = fr (L1, u2) , followed by a hard decision to obtain u1, which is based on the LLR of u1 if u1 is an information bit. Note that the decoding order has been changed, in that the second bit u2 is decoded before the first bit u1 instead of conventional decoding in sequential order by decoding u1 before u2.In the third step, Step 3, with both u1 and u2 decoded, it is straightforward to further recover the code bit x1 by x1 = u1⊕u2. Note that here “re-encoding” is done in both Step 1 (x2 = u2) and Step 3 (x1 = u1⊕u2) in this example. This is also different from sequential decoding.It should be appreciated that LLR-based calculations or procedures (or similar decoding calculations or procedures) may still be performed for frozen bits and not just for information bits. Although LLRs might not be used in making bit decisions for frozen bits, received LLRs for received code bit indices that correspond to frozen bits may still be used in decoding input bits at bit indices in an information set.Fig. 14 is a diagram illustrating a binary tree representation of an example of decoding scheduling, and is consistent with the above example that refers to Fig. 13.Although decoding order may be reversed or otherwise be non-sequential for some bits or blocks of bits, remaining bits or blocks of bits may still follow conventional sequential decoding order. This type of combined decoding order, which may be referred to as hybrid sequential and non-sequential decoding order, may exhibit the best decoding performance.For example, suppose that decoding order for a length-8 polar code is the following:u5, u6, u7, u3, u4, u1, u2, u8. Here, the blocks u5, u6, u7 and u3, u4 and u1, u2 are sequential within themselves, and these may be referred to as sequential decoding blocks. However, decoding order at the beginning and between the blocks is non-sequential, in that u5 and not u1 is decoded first, and between the first two blocks u5, u6, u7 are decoded before u3, u4, and between the last two blocks u3, u4 are decoded before u1, u2. In this example, decoding for u8 is non-sequential in that u8 is not decoded immediately after u7, but in terms of f / g and fr / gr functions, the immediately preceding bit u7 has already been decoded and therefore conventional f-function and g-function decoding can be used for u8.Within any block, decoding may be sequential or may include sequential and non-sequential encoding. For example, in the first block u5 is decoded first, and this is non-sequential decoding because u4 was not decoded before u5. The new fr -function and the new gr -function are used for non-sequential decoding of u5. Within the first block, however, after u5 is decoded, sequential decoding (using the f-function and the g-function) can be used to decode u6 and u7 because u5 was decoded before u6. Decoding then transitions or "jumps" from u7 to a non-consecutive or non-sequential bit u3, and decoding of u3 uses non-sequential decoding. Decoding of u4 after u3 is sequential, then non-sequential after transitioning to u1, and then finally sequential decoding can be used to decode u2 after u1. In this example there are three non-sequential transitions, including the initial transition to u5 and two subsequent transitions at the end of each of the first two blocks. In general, if there are multiple decoding scheduling options with different numbers of such transitions or jumps but the same or similar performance, the option that involves fewer transitions may be preferred.In embodiments that involve PC bits, the values of the PC bits are either copied from another information bit, or determined from an XOR sum of a set of other information bits. With non-sequential decoding, the definition of PC bits and information bits may depend on decoding order. In general, if PC bits are used, it may be preferred that the last bit in a PC function that is to be decoded according to a decoding order is a PC bit. Once other bits in the PC function have been decoded, the last bit becomes known, presuming that all other bits are correctly decoded.For example, for a PC function ui+uj=0, if uj is decoded, then ui immediately becomes known because ui=uj. Here, ui, instead of uj, is the PC bit. As another example, for a PC function ui+uj+uk=0, if uj and uk are decoded, then ui immediately becomes known because ui=uj+uk. Here, ui, instead of uk, is the PC bit. This is an example of one bit value being placed on multiple bit indices.Also in the context of PC bits, soft combining can be applied to PC bits. If there are only two undecided bits in a PC function, for example, then they can be jointly decided, such as by combining their soft information such as LLRs. For parallel decoding with ui+uj=0 (or ui+uj=1) , for example, and the soft information L′i and L′j obtained at the same time, the following can be usedui=uj= (1-sign (L′i+L′j) )  / 2orui=~uj= (1-sign (L′i-L′j) )  / 2so that the decisions on ui and uj are done simultaneously. This may be referred to as joint decision or parallel decoding.For serial decoding and using the same PC function example that was used above for parallel decoding, the difference is that the soft information L′i is obtained first, and L′j is to be obtained at a later time. In this case, the hard decision of ui can be postponed until L′j is obtained. However, a soft decision of ui can be made to allow decoding to continue. Once L′j is obtained, the hard decisions of ui and uj can be made as in the above parallel decoding example.Decoding order may be determined or obtained based on any of various criteria, such as either or both of code length and channel.For example, when code length M is a power of 2 (M=N=2n) sequential decoding may be applied, and sequential decoding may also be applied when code length is (1+a) N / 2, where a∈ {1 / 8, 1 / 4, 3 / 8, 1 / 2, 5 / 8, 3 / 4, 7 / 8} .When code length M is over (1+a) N / 2, however, where N is power of 2 mother code length and a∈ {0, 1 / 8, 1 / 4, 3 / 8, 1 / 2, 5 / 8, 3 / 4, 7 / 8} , bit indices may be divided into two sets. The two sets include the first (1+a) N / 2 bit positions, which may be sequentially decoded, and the other M- (1+a) N / 2 bit positions, which may be decoded in non-sequential order.Other criteria and / or decoding scheduling may be used in other embodiments, and examples are provided elsewhere herein, including at least below.In some embodiments a scheduling sequence is used to indicate or specify decoding order for all bit indices. Decoding order may be uniquely defined by a scheduling sequence, which may also be referred to s a decoding scheduling sequence or DS. For example, in DS= [i1, i2, i3 …iM] the indices i are bit positions to be decoded, and their order in the sequence is the decoding order. As another example, several starting and / or ending points may be used to define a decoding order. Suppose that a scheduling sequence DS= [i1, …, it, it+1 …iM] , includes several sets of consecutive indices represented by “…” . Such a scheduling sequency can instead be represented as DSs= [i1, it, it+1, iM] , including only the starting and ending points of each set of consecutive indices.As described in further detail elsewhere herein, a scheduling sequence may indicate or specify the order in which decoding for bit indices is to be performed. Consider, for example, a scheduling sequence of length M=N-P, and a permutation of indices [P+1 …N] . In special cases where P=0 (no puncturing) and P=N / 2, decoding sequences may indicate decoding for bit indices in ascending order, for sequential decoding. For these special cases, it is possible to instead use non-sequential decoding, but sequential decoding may offer sufficient coding performance in the absence of puncturing or transmitted code length is N / 2 (for P=N / 2) . In other cases, decoding scheduling sequences might not be in ascending order of bit index, for non-sequential decoding.Scheduling sequences may be determined or designed according to any of various conditions or rules.For example, an information bit and its preceding consecutive frozen bits may be bundled as an information bit block or cluster. Consecutive bit indices [i, i+1 …k-1, k] , for example, may be bundled as an information bit cluster if and only if the k-th bit index is an information bit index, and all preceding bit indices [i, i+1 …k-1] are frozen bit indices. An information bit cluster with bit indices [i, i+1 …k-1, k] may be denoted by {k} for simplicity.Decoding for bit indices in an information bit cluster is sequential in some embodiment. In other words, the decoding order within an information bit cluster is ascending order according to sequential order of the bit indices, and therefore not need be further specified in a scheduling sequence. For convenience, a reference to decoding an information bit cluster {k} is equivalent to decoding for the bit indices [i, i+1 …k-1, k] sequentially or in sequential order. With such a description simplification, a decoding sequence can be reduced to include or otherwise indicate only information bit indices.Non-sequential decoding enables an information bit cluster to be decoded only after the corresponding information bit position at the information bit index of the cluster becomes sufficiently reliable. During the course of decoding, as more information bits are decoded, decoding of bit values for remaining bit indices will become more reliable in general. This phenomenon can be observed for both sequential and non-sequential decoding. Sequential decoding is well known. In non-sequential decoding, decoding for a bit index j, which may involve making a hard decision for an information bit value, can also enhance the decoding reliability for a preceding or smaller information bit index i (i<j) . For example, consider an information bit cluster in which the bit value for the last bit index in the cluster has already been decoded from another bit index. In this example, the bit value for the last bit index is known, which makes the preceding bit indices in the cluster more reliable.If an input bit value is placed on multiple bit indices, with the same label for example, then decoding of a bit value on any one of those bit indices will immediately reveal the bit value on the other bit indices. Therefore, information bit clusters corresponding to the other bit indices may be decoded immediately after the information bit cluster that corresponds to the first decoded bit index. Consider information bit clusters {k1} , {k2} and {k3} , with corresponding information bit indices k1 < k2 < k3 for illustrative purposes and the same input bit value placed on k1, k2, and k3 using the same label for example. If the information bit cluster {k3} is decoded first, then {k1} and {k2} can be decoded immediately after {k3} .An example of a rateless (16≤M≤32, K=16) code is provided above, with reference to Fig. 7 and Table 1. Scheduling sequences for such a code may be as follows, in an embodiment, with sequential decoding shown for the special cases of M=32 (P=0, no puncturing) and M=N / 2 (P=N / 2) :M=16: 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32 (Sequential decoding)M=17: 17, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32M=18: 17, 16, 18, 15, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32M=19: 17, 16, 18, 15, 19, 14, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32M=20: 17, 16, 18, 15, 13, 14, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32M=21: 17, 16, 18, 15, 13, 14, 19, 20, 21, 12, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32M=22: 17, 16, 18, 15, 11, 12, 13, 14, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32M=23: 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32M=24: 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32M=25: 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 8, 26, 27, 28, 29, 30, 31, 32M=26: 9, 10, 11, 12, 13, 14, 15, 16, 7, 8, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32M=27: 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32M=28: 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32M=29: 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32M=30: 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32M=31: 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32M=32: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32 (Sequential decoding) .Using a simplified description in which only an information bit index is used to indicate represent each corresponding information bit cluster, simplified scheduling sequences for the above example are as follows:M=16: 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32 (Sequential decoding)M=17: 17, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32M=18: 17, 16, 18, 15, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32M=19: 17, 16, 18, 15, 19, 14, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32M=20: 17, 16, 18, 15, 14, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32M=21: 17, 16, 18, 15, 14, 19, 20, 21, 12, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32M=22: 17, 16, 18, 15, 12, 14, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32M=23: 12, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32M=24: 12, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32M=25: 12, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 8, 26, 27, 28, 29, 30, 31, 32M=26: 12, 14, 15, 16, 8, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32M=27: 8, 12, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32M=28: 8, 12, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32M=29: 8, 12, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32M=30: 8, 12, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32M=31: 8, 12, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32M=32: 8, 12, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32 (Sequential decoding) .For example, in the M=32 simplified scheduling sequence, "8" indicates the information bit cluster {1, 2, 3, 4, 5, 6, 7, 8} in the corresponding non-simplified scheduling sequences for M=32. The frozen bit indices 1, 2, 3, 4, 5, 6, 7 are omitted from the simplified scheduling sequence. This is one example illustrating how simplified scheduling sequences that include or otherwise indicate only information bit indices for each information bit cluster may be shorter than non-simplified sequences that include or indicate each bit index.An illustrative and non-limiting example of non-sequential SC decoding is provided below, with reference to Fig. 15, which is a diagram illustrating a binary tree representation of non-sequential SC decoding of a length-4 polar code. The decoding order for the length-4 polar code in this example is u3, u4, u2, u1.In Fig. 15, each edge represents either a set of f-functions or a set of g-functions, or a set of fr -functions or a set of gr -functions. The order of executing f / g / fr / gr -function is defined by the decoding order (or scheduling) u3, u4, u2, u1. Note that the left-to-right hard bit propagation, for u3 at Step 3, for u4 at Step 4, for u2 at Step 6, and for u1 at Step 7, is done once the lower-left bit in a butterfly has been decoded. In other words, there is no need to wait until both bits on the left side of a butterfly have been decoded (hard decided) to recover the bits on the right side of the butterfly. Following these rules, SC decoding of any mother code length N=8, 16, 32, 64 …can be derived given specific decoding scheduling.Generalizing to SCL decoding, including CA-SCL and PC-SCL:each path [ui1, ui2, . . ., uiN] ∈ {0, 1} N represents non-sequential SC decoding results, where i1, i2, ..., iN∈{1, 2, . . ., N} are the bit indices;a path metric is the likelihood (or probability) of the path, given the channel output, which may be expressed as Pr (ui1, ui2, . . ., ui|L1, L2, . . ., LN) -in practice, this may be implemented in the logarithm domain, and approximated as the selected sum of LLRs: whereis a binary indicator, and L′j is the LLR of uj.Decoding may otherwise be the same as sequential SCL decoding.Fig. 16 includes a table and a diagram of a trellis, illustrating differences between non-sequential and sequential decoding. One feature of non-sequential decoding is that decoding may start from any point of the trellis at the right. New left / right propagation features are proposed to support arbitrary starting and finishing bit positions.Given a bit index i with 0≤i≤N-1 (note here that the index starts from 0 rather than 1) , several auxiliary parameters referenced in the example below include the following, all of which are shown at the table on the left in Fig. 16:Binary expansion of index i: denoted by column label "index" in the table and expressed as bin (i) Left propagation depth: denoted by column label ← in the table and calculated by sum (xor (bin (i) , bin (i-1) ) ) f / g function sequence: denoted by column label "f / g" in the table and expressed as {f, g} n, where n=log2 (N) , and the sequence is obtained by replacing each 0 in bin (i) by an f-function and replacing each 1 in bin (i) by a g-function -note that f / g here is intended to generally denote an f-function or a g function that, depending on decoding order and the bit being decoded, may be the conventional f-function, the fr -function disclosed herein, the conventional g-function, or the gr -function disclosed hereinRight propagation depth: denoted by column label → in the table and calculated by # (ending 1) , i.e., the number of ending 1s in the bin (i) .To decode a bit indexed by i, there are two cases or scenarios.If the previous bit indexed by i-1 has already been decoded, then the bit indexed by i can be decoded as in sequential decoding because the immediately preceding bit has been decoded. The left propagation depth (the number of stages to perform f / g function) is the second auxiliary parameter above, and the right propagation depth (the number of stages to perform re-encoding) is the fourth auxiliary parameter above.If the previous bit indexed by i-1 has not yet been decoded, then decoding is non-sequential decoding. The left propagation starts from the rightmost stage, that is, the left propagation depth is n, and the full f / g function sequence is executed. The right propagation depth depends on the decoding status of its subsequent bits. A greedy right propagation of re-encoding is performed as long as there are no XOR operations with a lower bit (in the “butterfly” ) , or the lower bit is already decoded or re-encoded. As an example, consider starting decoding at index 2 (010) , labeled 1602 in Fig. 16. In sequential decoding, an f-function at 1604 in the row of the trellis at S=2 would have been previously executed in decoding the index 0 bit, but for non-sequential decoding in this example this f-function has not been executed because decoding in this example starts with decoding the index 2 bit. Therefore, the f / g function sequence for starting non-sequential decoding at index 2 is shown in the table at the left in Fig. 16 as fgf, with the first f in the f / g function sequence in bold and underline formatting to indicate that non-sequential decoding starting at the index 2 bit involves an f-function that would already have been executed and would need not be repeated in sequential decoding of the index 2 bit after the index 0 and index 1 bits. The trellis at the right in Fig. 16 also includes f / g labeling for another example of non-sequential decoding starting at index 5 (101) , labeled 1606 in Fig. 16.In summary, jumping into decoding a bit in non-sequential order, using LLR domain as an example, may involve propagating LLR (right to left) from a deeper stage (right hand side of the trellis in Fig. 16; propagating hard decisions (left to right) to a deeper stage; and executing the fr -function and the gr -function as needed.In some embodiments, information / frozen / PC bits are still decoded one by one, but decoding of such bits does not follow a sequential order according to the bit index [1, 2, 3 …N] . Instead, the decoding order is specified by a decoding scheduling sequence DS= [i1, i2, i3 …iM] , where the indices are the information / frozen / PC bit indices to be decoded. Note that M can be an integer smaller than N, because some zero-capacity or near zero-capacity bit indices can be skipped. This is an example of what may be referred to as “scheduled-serial” decoding.Fig. 17 is a diagram of a trellis, illustrating an example of decoding that involves non-sequential polar code decoding. The example in Fig. 17 is for a length-8 code where the first 3 code bits are punctured, and the decoding scheduling sequence is DS= [5, 6, 4, 7, 8] . In the example shown in Fig. 17, bit values for the bit indices 4 and 5 are the same, and the return arrow from position 5 to position 4 at the left in Fig. 17 is intended to represent the fact that the bit value for bit index 4 is known after the bit value for bit index 5 has been decoded.To reduce description complexity, the decoding scheduling sequence may be shortened to indicate only non-sequential parts. If there is a consecutive sequential subsequence [i, i+1 …j] , for example, this can be represented as [i, j] for simplicity. A full decoding scheduling sequence DS= [i1, i2, i3 …iM] which can be represented as DS= [i1, …, it, it+1 …iM] , where “…” are consecutive indices, can be reduced to DSs= [i1, it, it+1, iM] . For example, DS= [5, 6, 7, 2, 3, 4, 8] can be reduced to DSs= [5, 7, 2, 4, 8] .Fig. 18 is a diagram of a trellis, illustrating another example of decoding that involves non-sequential polar code decoding. In this example of a length-8 code, the first 2 code bits are punctured, and the decoding scheduling sequence is DS= [4, 5, 6, 3, 7, 8] , or shortened as DSs= [4, 6, 3, 7, 8] . In the example shown in Fig. 18, bit values for the bit indices 4 and 5 are the same, and bit values for the bit indices 3 and 6 are the same. The arrows from position 4 to position 5 and from position 6 to position 3 at the left in Fig. 18 are intended to represent this. Regarding indices 4 and 5, Fig. 18 is different from Fig 17 in that the bit value for bit index 5 is decoded first in Fig. 17, but the bit value for bit index 4 is decoded first in Fig. 18.Decoding orders in which information / frozen / PC bits are no longer decoded in serial order, but in parallel, are also possible. In cases in which there are multiple bits that have the same value, according to a PC function for example, they can be hard decided in parallel after combining their soft information such as LLRs. The decoding order in each parallel decoding block can be sequential, or non-sequential.A parallel decoding order can be represented by a set of decoding scheduling sequences, instead of only one sequence. If there are p blocks that are to be decoded in parallel, then there may be p decoding scheduling sequences, including a respective decoding scheduling sequence for each block. This may be expressed as follows, as an example:DS1= [i1, i2 …] , DS2= [j1, j2 …] , …, DSp= [k1, k2 …] .Any bits that are to be simultaneously hard decided can be represented by index tuples, which are pairs in the case of two bits to be hard decided at the same time, triples as in the following examples in the case of three bits to be hard decided at the same time, and so on:(ir=js=kt) , (ir+4=js+2=kt+1) , …The above examples illustrate that bits that are to be simultaneously hard decided need not have corresponding positions in the decoding scheduling orders of parallel decode blocks. Such bits also need not be in the same position within their respective blocks. In the first example above, the r-th index in DS1, the s-th index in DS2, and the t-th index in DS3 are to be simultaneously hard decided. All of r, s, and t in this example, or any two of them, may be the same, or they may all be different.Fig. 19 is a diagram of a trellis, illustrating a further example of decoding that involves non-sequential polar code decoding. In the example shown, the upper half and lower half of the trellis are decoded in parallel. The decoding scheduling sequences are DS1= [3, 4] , DS2= [5, 6, 7, 8] , and (4=5) . As seen, for the 4th and 5th indices, their bit values are the same, and therefore their soft information such as LLRs L’ 4 and L’ 5 are combined first in this example, and then a joint hard decision is made: u4=u5= (1-sign (L′4+L′s) )  / 2.Fig. 20 is a diagram of a trellis, illustrating yet another example of decoding that involves non-sequential polar code decoding. In the example shown, as in the above example that refers to Fig. 19, the two parallel-decoded blocks have different sizes. More generally, blocks that are to be parallel-decoded may be of the same size or different sizes.The decoding scheduling sequences in the example shown in Fig. 20 are DS1= [2] , DS2= [3, 4, 5, 6, 7, 8] , and (2=3) . As seen, for the 2nd and 3rd indices, their bit values are the same, and therefore their soft information such as LLRs L’ 2 and L’ 3 are combined first in the example shown, and then a joint hard decision is made:u2=u3= (1-sign (L′2+L′3) )  / 2.In these two examples, the splitting point between two blocks, denoted o for ease of reference, are different. They are 4 and 2, respectively. In practice, a splitting point can be set as mother code length N divided by a power of 2 integer, such as o=N / 2, N / 4, N / 8, N / 16, etc., and their combination sums, such as o= N / 2+N / 4, o= N / 2+N / 8, o=N / 2+N / 4+N / 16, etc.In embodiments that may be referred to herein as bidirectional decoding, directions of decoding different blocks can be different. For example, one block may be decoded in sequential order, while another block is decoded in reverse sequential order.Fig. 21 is a diagram of a trellis, illustrating a bidirectional decoding example according to an embodiment. In the example shown, the upper and lower half of the trellis are decoded in parallel, but in different directions. Although the example in Fig. 21 is for parallel-decoded blocks, bidirectional decoding may be applied to serially decoded blocks.The decoding scheduling sequences in Fig. 21 are DS1= [4, 3] , DS2= [5, 6, 7, 8] , and (4=5) . As seen, the bit values for the 4th and 5th indices are the first decoded bit in each block and are the same, and therefore their soft information such as LLRs L’ 4 and L’ 5 are combined in the example shown and then a joint hard decision is made: u4=u5=(1-sigh (L′4+L′5) )  / 2.Fig. 22 is a diagram of a trellis, illustrating another bidirectional decoding example. In this example, the two parallel-decoded blocks have different sizes. The decoding scheduling sequences are DS1= [3, 2] , DS2= [4, 5, 6, 7, 8] , and (3=4) . As seen, the bit values for the 2nd and 3rd indices are the first decoded in each block and are the same, and therefore their soft information such as LLRs L’ 3 and L’ 4 can be combined and then a joint hard decision can be made:u3=u4= (1-sign (L′3+L′4) )  / 2.Bit labeling, non-sequential decoding, or both, may be applied in conjunction with other features disclosed herein, such as those disclosed by way of example below with reference to various illustrative embodiments.Illustrative Embodiment 1An illustrative embodiment that is also referenced herein as Embodiment 1 is disclosed in the context of an example encoding chain for a (K ≤ M ≤ Nmax, K) rateless polar code.Consider an initial mother code lengthBit indices for information (or non-frozen) sets Iu, Iuv, Iv and I are determined according to ordered sequences in which the bit indices are ordered based on a rank for placement of input bits, such as reliability. Such ordered sequences may be pre-defined in a communication specification or standard for example. Nested reliability ordered sequences are used in some embodiments.In an iterative or recursive approach, the information bit set in Iu may have already been determined, in which case that information bit may be directly reused.Placement of bit values on the N bit indices may involve bit labeling, in which bit values are assigned to labels, and the labels are each associated with one or more of the N bit indices. Each bit index may be labeled by either 0 for frozen bit indices, or {1, 2 …K} for information bit indices for example. Here, and elsewhere herein, bit labeling and labels represent one possible way, but not the only way, to map each bit value to one or more bit indices and place each bit value on one or more bit indices.The K bit indices in Iu may be labeled using labels {1, 2 …K} , or may be otherwise mapped to the bit values of the K input bits, such that the bit values of the K input bits are respectively placed on one of the K bit indices in Iu.The input bit values or labels may be placed on the bit indices in Iu in ascending bit index order, for example. If K>N / 2, then the first {1, 2 …K-N / 2} bit values or labels are placed on the K-N / 2 virtual information bit indices, and then the remaining {K-N / 2+1, K-N / 2+2 …K} input bit values or labels are placed on the N / 2 information bit indices in Iu by ascending bit index order. Ascending bit index order refers to a sequential order of bit indices in Iu. In this example, negative values of virtual information bit indices as described above may be useful to ensure that the virtual information bit indices appear first in ascending bit index order, so that the first {1, 2 …K-N / 2} bit values or labels are placed on the virtual information bit indices.Another possible placement order according to which bit values are placed on bit indices in Iu is by ascending or of rank, such as reliability order. If K>N / 2, then the first {1, 2 …K-N / 2} bit values or labels are placed on the K-N / 2 virtual information bit indices, and then the remaining {K-N / 2+1, K-N / 2+2 …K} input bit values or labels are placed on the N / 2 information bit indices in Iu by ascending reliability order or other order of rank of bit indices in Iu. In this example, negative reliability values for virtual information bit indices as described above may be useful to ensure that the virtual information bit indices appear first in ascending reliability order, so that the first {1, 2 …K-N / 2} bit values or labels are placed on the virtual information bit indices. If a rank other than reliability is used, then rank values for the virtual information bit indices may similarly be set or determined to achieve the same relative order of virtual information bit indices, with virtual information bit indices preceding other information bit indices in an ordered sequence.These example orders illustrate how virtual information bit indices impact placement of bit values on bit indices. In these examples, if K>N / 2, then the first K-N / 2 bit values or labels are placed on bit indices that are not actually part of the u-code and will not be encoded. Virtual information bit indices may provide a convenient way to manage placement of bit values when a bit index segment does not include enough bit indices to accommodate all input bit values or all labels, but other options are possible. For example, the number of elements or bit indices by which K exceeds N / 2 may be tracked in some other way, and the first K-N / 2 bit values or labels may be skipped for placement on bit indices in Iu. It should therefore be understood that virtual information bit indices may be used in some embodiments, but are not required in all embodiments.As an example, for a length N=8, K=5 code, K>N / 2 and one of the five input bit values cannot be accommodated in the u-code. Denoting the input bit values by a1 to a5, a1 may be placed on a virtual information bit index (or otherwise be tracked for placed on a bit index in the v-code) , and a2 to a5 are placed on bit indices in the u-code. If bit values are placed on bit indices in the u-code according to an order of rank that increases with increasing bit index, and bit values are placed on bit indices according to decreasing bit index order, then the final bit value placement in this example is [0 ,0, 0, a1, a2, a3, a4, a5] .In an iterative or recursive approach, bit values or labels may already have been placed on the information bit indices in Iu, in which case the bit value or label placements may be directly reused.For ease of reference, denote bythe information bit index set in the u-code that will share the same set of input bit values, and labels in some embodiments, with those in Iv. is the least reliable |Iv| bit indices in Iu. If K>N / 2, thenalso includes K-N / 2 virtual information bit indices that are actually not in the u-code, if virtual bit indices are used.is the set difference between Iu and Iuv. If K>N / 2, because Iu includes the virtual information bit indices and Iuv does not include these virtual information bit indices, the K-N / 2 virtual information bit indices are included inagain if virtual information bit indices are used.By definitionThe bit indices inand Iv may be sorted in different ways. In the present Embodiment 1, the bit indices inare sorted by ascending order of rank, such as reliability order. For ease of reference, the sorted bit indices are denoted byThe bit indices in Iv are sorted differently, by ascending transmission order (or descending bit index order in the case of sequential puncturing for example) in Embodiment 1, and for ease of reference the sorted bit indices are denoted byInput bit values or labels are then placed on the bit indices in Iv. In a labeling embodiment, and denoting the labels inbythe labels inmay be placed on the bit indices inMore generally, the input bit values that are placed on the bit indices inare also placed on the bit indices inand this may involve labels in some embodiments.The foregoing description of Embodiment 1 refers to an iterative approach, and a doubling, selection, and placement process is also referenced at least above. If N<Nmax, then N can be set to N=2×N, and bit selection and placement as outlined above can be repeated.After one or more iterations, when target code length Nmax has been reached, polar encoding is performed. The last M code bits, indexed by [N-M+1, N-M+2 …N] , are transmitted as a rateless codeword. Multiple transmissions of increasing transmitted code length may be made up to a maximum number of transmissions or receipt of feedback indicating correct decoding, in an IR-HARQ approach for example.Fig. 23 is a diagram illustrating bit value placement, by using the same labels for example, on multiple bit indices including one or more of the least reliable u-code bit indices (at least three in the example shown) and one or more (at least three in the example shown) of the highest bit indices in decreasing order of the v-code bit indices.Placement of bit values on multiple bit indices may be accomplished in any of various ways. For example, a bit value may be separately placed on each of multiple bit indices that are identified for placement of that bit value. Some embodiments may involve placing a bit value on one bit index and then copying the bit value to one or more other bit indices, to thereby also place that same bit value on the one or more other bit indices. For example, a bit value may be placed on a bit index in the u-code and then copied to, and thereby placed on, another bit index in the v-code. Copying in the opposite direction (from a v-code bit index to a u-code bit index) is another option.The arrows at the top in Fig. 23 represent bit values in the u-code also being placed on bit indices in the v-code. Bit value placement is illustrated by way of example by the solid arrows 2302, 2304, 2306 as copying bit values, from u-code bit indices on which those bit values have been placed, to v-code bit indices in the v-code. The dashed arrows 2312, 2314, 2316 in combination with the solid arrows 2302, 2304, 2306 illustrate another example of bit value placement, by separately placing bit values on each of multiple bit indices, including respective bit indices in the u-code and the v-code, that are identified for placement of that bit value.It should therefore be appreciated that the present disclosure is not limited to any particular way of placing bit values on multiple bit indices. This applies not only to Embodiment 1, but also to other embodiments herein.Illustrative Embodiment 2Another illustrative embodiment, also referenced herein as Embodiment 2, may be substantially the same as Embodiment 1 except for the sorting of bit indices inIn Embodiment 2, the bit indices inare sorted by ascending bit index order (instead of by rank as in Embodiment 1) . The bit indices in Iv are sorted by descending bit index order, as in Embodiment 1.Fig. 24 is a diagram illustrating bit value placement, by the same labels for example, on multiple bit indices including one or more of the lowest bit indices (at least three in the example shown) for the u-code and one or more of the highest bit indices (at least three in the example shown) for the v-code. As in Fig. 23, and other similar drawings herein, the arrows at the top in Fig. 24 represent bit values in the u-code also being placed on bit indices for the v-code, by copying bit values from u-code bit indices to v-code bit indices (the solid arrows 2402, 2404, 2406) or separately placing bit values on u-code bit indices and v-code bit indices (the dashed arrows 2412, 2414, 2416 in combination with the solid arrows 2402, 2404, 2406) .Illustrative Embodiment 3According to another illustrative embodiment, referenced herein as Embodiment 3, bit values are placed on bit indices in the v-code in a segment-by-segment manner. Sorting and bit value placement are different in Embodiment 3, but otherwise Embodiment 3 is substantially the same as Embodiment 1.In Embodiment 3, the bit indices inand Iv are sorted as in Embodiment 1, and then the sorted bit indices in andare split into S segments.For example, may be split into S segments (S=4, for example) according to bit indices in the v-code. This may be accomplished by splitting the v-code bit indices into S equal-sized and unique segments, each with (N / 2)  / Sv-code indices, denoted as follows for ease of reference: Jv1= [1, 2…N / S / 2] , Jv2=Jv1+ N / S / 2, …, JvS= [N / 2-N / S / 2+1, N / 2-N / S / 2+2, …, N / 2] . Then, the S segments ofare the intersections betweenand respective ones of the S equal-sized parts, in reverse or opposite order, from the S-th part to the first part. The S segments ofand the set intersections upon which they are based may be expressed as follows: Note that the index order within each segment remains the same as before the intersection.This may perhaps best be illustrated with an example. Consider a length-32 polar code with the reliability ordered sequence [0, 1, 2, 4, 8, 16, 3, 5, 9, 6, 17, 10, 18, 12, 20, 24, 7, 11, 19, 13, 14, 21, 26, 25, 22, 28, 15, 23, 27, 29, 30, 31] and a code rate 1 / 2. The resultant (N=32, K=16) code has an information set I = [7, 11, 19, 13, 14, 21, 26, 25, 22, 28, 15, 23, 27, 29, 30, 31] , Iv = [7, 11, 13, 14, 15] , andbecause With the bit indices insorted in ascending order of reliability in this example, and with the bit indices in Iv sorted by ascending transmission orderTo splitinto S=4 segments as outlined above,Jv1= [0, 1, 2, 3] , Jv2= [4, 5, 6, 7] , Jv3= [8, 9, 10, 11] , Jv4= [12, 13, 14, 15] , andHere, it can be seen that the v-code bit index segments Jv1, Jv2, Jv3, Jv4 and the set intersections can be used to extract the v-code information bit indices, asaccording to their positions in the v-code.can now be split into S parts according to sizes ofThat is, for all 1 ≤ s ≤ S. Specifically, wheremeans the i-th element inWith reference again to the example above, Input bit values are then placed on the bit indices in Iv, similar to Embodiments 1 and 2, but on a segment-by-segment basis. In a labeling embodiment and within the context of the example above, suppose that bit positions indexed by [16, 17, 18, 20, 24, 19, 21, 26, 25, 22, 28, 23, 27, 29, 30, 31] are labeled as l = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16] . For each s in 1 ≤ s ≤ S, the labels inmay be denoted as follows for ease of reference: In the above example, the labels forare: For each s in 1 ≤ s ≤ S, the labels inare also assigned to the bit indices insuch that the labels forIn this example, bits indexed by [16, 17, 18] and [15, 14, 13] both have labels [1, 2, 3] , bits indexed by

[0020] and

[0011] both have label [4] , and bits indexed by

[0024] and [7] both have label [5] .The labeling example is intended solely for illustration, and bit values may be placed on multiple bit indices, on a segment-by-segment basis, in substantially the same way but without using labels.Fig. 25 is a diagram illustrating bit value placement, by the same labels for example, on multiple bit indices on a segment-by-segment basis. The same bit value is placed on a least reliable information bit index in a u-code segment and a highest information bit index in a v-code segment. The solid and dashed arrows at the top in Fig. 25 illustrate bit value placement on multiple bit indices, by copying bit values from u-code bit indices to v-code bit indices (the solid arrows) or separately placing bit values on u-code bit indices and v-code bit indices (the dashed arrows in combination with the solid arrows) . Reference numbers for the arrows are not shown in Fig. 25 in order to help avoid further congestion in the drawing.Generally, one or more bit values may be placed on multiple bit indices in a u-code  / v-code segment pair. The number of common bit values placed on multiple bit indices within one segment pair may be the same as or different from the number of common bit values placed on multiple bit indices within a different segment pairs. There may be one segment pair or multiple segment pairs that have common bit values placed on bit indices of those segment pairs, but not all segment pairs necessarily have common bit values placed on their bit indices. In the above example, there are multiple common bit values betweenandone common bit value betweenand (adifferent number of common bit values than betweenand) , one common bit value betweenand (a different number of common bit values than between andbut the same number of common bit values as betweenand) , but no common bit values betweenand(a different number of common bit values than other segment pairs) .Embodiment 3 may be considered a segmented approach that is otherwise similar to Embodiment 1. This type of approach may also or instead be applied to Embodiment 2, with the u-code segments at the right in Fig. 25 sorted by ascending bit index order instead of by rank (shown by way of example as reliability in Fig. 25) .Illustrative Embodiment 4Another illustrative embodiment is referenced herein as Embodiment 4, and involves additionally freezing one or more information bit indices into frozen bit indices in the v-code. In this way, the code rate of the v-code can be reduced.Such code rate reduction can be provided, for example, by reducing the code rate of the v-code as a whole, as could be done in Embodiment 1 by having fewer u-code bit values also placed on bit indices for the v-code. Another option involves reducing the code rate of the v-code in a segment-by-segment manner, similar to Embodiment 3 but again with fewer u-code bit values also placed on bit indices for the v-code.Either of these options leads to smoother coding gain as the code length M of the rateless code increases, in the sense that reducing the code rate of the v-code results in smaller changes in code rate as M increases. This type of smoother coding gain can be helpful in avoiding significant performance loss for at least some M.Code rate reduction for the v-code as a whole is different from Embodiment 1 in terms of bit value placement. is again used here to denote the information bit index set in the u-code that will share the same set of input bit values, and labels in some embodiments, with an information bit index set for the v-code, but in Embodiment 4 the bit indices in will share input bit values, and possibly labels, with a reduced information set in Iv. With a code rate reduction ratio denoted by α and the number of information bit indices in Iv denoted by Kv, the reduced information set in Iv, denoted I'v, includes the α·Kv highest rank (most reliable, for example) bit indices in Iv. Rounding, flooring, or ceiling, for example, may be applied to α·Kv to obtain an integer number of bit indices for the I'v. In Embodiment 4, includes the lowest rank (least reliable, for example) |I'v| bit indices in Iu. By definition Subsequent operations for code rate reduction for the v-code as a whole may otherwise be consistent with Embodiment 1, but with Iv replaced by I’ v.With fewer u-code bit indices sharing the same bit values with v-code bit indices, there are fewer information bit indices and therefore more frozen bit indices in the v-code relative to Embodiment 1. See, for example, Fig. 26, which is a diagram illustrating bit value placement on multiple bit indices according to a reduced code rate embodiment. The solid and dashed arrows at the top of Fig. 26 illustrate bit value placement on multiple bit indices, by copying bit values from u-code bit indices to v-code bit indices (the solid arrows) or separately placing bit values on u-code bit indices and v-code bit indices (the dashed arrows in combination with the solid arrows) . Reference numbers for the arrows are not shown in Fig. 26 in order to help avoid further congestion in the drawing. The top label and circle 2602 in Fig. 26 indicate a reduced number of input bit values, relative to Embodiment 1 and Fig. 23, shared between u-code and v-code bit indices, or in other words a reduced number of input bit values placed on bit indices in both the u-code and the v-code. Additionally frozen bits are also shown in Fig. 26, to represent more frozen bit indices resulting from fewer information bit indices in the v-code.Embodiment 4 may be considered a reduced code rate approach that is otherwise similar to Embodiment 1. This type of approach may also or instead be applied to Embodiment 2, with the u-code bit indices at the right in Fig. 26 sorted by ascending bit index order instead of by rank (shown by way of example as reliability in Fig. 26) .For segment-by-segment or segment-wise code rate reduction, denotes the information bit index set in the u-code that will share the same set of input bit values, and labels in some embodiments, with a reduced information set in Iv.As in Embodiment 3, the sorted v-code bit indices are split into S equal-sized and unique segments, each with (N / 2)  / Sv-code indices, denoted as follows for ease of reference: Jv1= [1, 2…N / S / 2] , Jv2=Jv1+ N / S / 2, …, JvS= [N / 2-N / S / 2+1, N / 2-N / S / 2+2, …, N / 2] . Then, the S segments ofare the intersections betweenand respective ones of the S equal-sized parts, in reverse or opposite order, from the S-th part to the first part. The S segments ofand the set intersections upon which they are based may be expressed as follows: Segment-by-segment code rate reduction may involve respective code rate reduction ratios for the S segments, denoted α1, α2, …, αS for ease of reference. The number of information bit indices in Iv1, Iv2, …, IvS are Kv1, Kv2, …, KvS, respectively, and the α1·Kv1, α2·Kv2, …, αS·KvS highest rank (most reliable, for example) bit indices in Iv1, Iv2, …, IvS, respectively, are the reduced information subsets in Iv1, Iv2, …, IvS. The reduced information subsets are denoted by I’ v1, I’v2, …, I’ vS, respectively. Rounding, flooring, or ceiling, for example, may be applied to α1·Kv1, α2·Kv2, …, αS·KvS to obtain an integer number of bit indices for each reduced information subset.The union setis the lowest rank (least reliable, for example) |I’ v| bit indices in Iu. By definitionSubsequent operations for segment-by-segment code rate reduction for the v-code may otherwise be consistent with Embodiment 1, but with Iv replaced by I’ v.The overall result of segment-by-segment code rate reduction is the same as that of code rate reduction for the v-code as a whole, in respect of fewer u-code bit indices sharing the same bit values with v-code bit indices. Fig. 27 is a diagram illustrating bit value placement on multiple bit indices according to a segment-by-segment reduced code rate embodiment. As in Fig. 26, the solid and dashed arrows at the top of Fig. 27 illustrate bit value placement on multiple bit indices, by copying bit values from u-code bit indices to v-code bit indices (the solid arrows) or separately placing bit values on u-code bit indices and v-code bit indices (the dashed arrows in combination with the solid arrows) . Reference numbers for the arrows are not shown in Fig. 27 in order to help avoid further congestion in the drawing. The top label and circle 2702 in Fig. 27 indicate a reduced number of input bit values, relative to Embodiment 1 and Fig. 23, and also Embodiment 3 and Fig. 25, shared between u-code and v-code bit indices, or in other words a reduced number of input bit values placed on bit indices in both the u-code and the v-code. Additionally frozen bits are shown in Fig. 27, to represent more frozen bit indices resulting from fewer information bit indices in the v-code.Segment-by-segment code rate reduction may be considered a segmented approach that is otherwise similar to Embodiment 1, or a reduced code rate approach that is similar to Embodiment 3. This type of code rate reduction may also or instead be applied in conjunction with different sort orders such as the u-code sort order in Embodiment 2, with the u-code segments at the right in Fig. 27 sorted by ascending bit index order instead of by rank (shown by way of example as reliability in Fig. 27) .Illustrative Embodiment 5Yet another illustrative embodiment, referenced herein as Embodiment 5, inherits features from other embodiments, but uses different bit value placement, consistent with different labeling rules or features, for example. Moreover, combined with several pre-calculated scheduled decoding algorithms, rateless polar codes according to Embodiment 5 may have very competitive performance.Embodiment 5, like other embodiments, is disclosed in the context of an example for a (K ≤ M ≤ Nmax, K) rateless polar code. Initial mother code lengthand determination of bit indices for information (or non-frozen) sets Iu, Iuv, Iv and I are as in Embodiment 1, and bit placement for the u-code is also as in Embodiment 1.Code rate reduction, introduced by way of example in Embodiment 4, is applied in Embodiment 5, and denotes an information bit index set in the u-code that will share the same set of input bit values, and labels in some embodiments, with a reduced information bit index set in Iv. With a code rate reduction ratio α and Kv information bit indices in Iv, the reduced information set in Iv (denoted by I’ v as in Embodiment 4) includes the α·Kv highest rank (most reliable, for example) bit indices in Iv. As in other embodiments, rounding, flooring, or ceiling, for example, may be applied to α·Kv to obtain an integer number of bit indices. includes the lowest rank (least reliable, for example) |I’ v| bit indices in Iu. If K>N / 2, thenalso includes the K-N / 2 “virtual” information bit indices in some embodiments, for virtual information bits that are actually not in the u-code. By definitionNext, and I’ v are sorted, and the sorted bit indices are split into S segments. For example, as in Embodiment 1, may be sorted by ascending rank such as in reliability order and denoted bySimilarly, I’ v may be sorted by a different order such as by ascending transmission order (or descending bit index order in the case of sequential puncturing) , and denoted byThe notationis used here to denote sorted bit indices of the v-code, but in Embodiment 5includes bit indices in the reduced information set (I’ v) in Iv.Bit indices inare split into segments according to their bit positions in the v-code. The v-code bit indices are split into S unequal-sized parts, denoted as follows and including bit indices as indicated, for an illustrative example of S=4 parts: Jv1= [1, 2…N / 4] , Jv2= [N / 4+1, N / 4+2…3 / 8·N] , Jv3= [3 / 8·N+1, 3 / 8·N+2…7 / 16·N] , Jv4= [7 / 16·N+1, 7 / 16·N+2…N / 2] . Then, segments ofare obtained as intersections with the S parts, in reverse or opposite order, similar to Embodiment 3. In the above example with S=4, the segments ofcan be expressed as follows: Continuing with the above example of S=4 parts of the v-code and S=4 segments ofis split into 4 parts according to the sizes ofThat is, for all 1 ≤ s ≤ 4. Specifically, wheremeans the i-th element inFor each s in 1 ≤ s ≤ S=4 in this example, bit indices inare sorted by ascending bit index order and the sortedis denoted byand bit indices inare sorted by ascending rank (increasing reliability order, for example) and the sortedis denoted byInput bit values or labels are then placed on the information bit indices for the v-code on a segment-by-segment basis. In a labeling embodiment for example, for each s in 1 ≤ s ≤ S, the labels formay be denoted byls2 …ls (α·Kv) ] , and the labels inare placed on the bit indices inThe labeling example is intended solely for illustration, and bit values may be placed on multiple bit indices, on a segment-by-segment basis, in substantially the same way but without using labels.The example of S=4 is also intended for illustrative purposes. In another example, S=3 and bit indices inare split into 3 segments according to their bit positions in the v-code. The v-code bit indices are split into 3 unequal-sized parts in this example, denoted as follows and including bit indices as indicated: Jv1= [1, 2…N / 4] , Jv2= [N / 4+1, N / 4+2…3 / 8·N] , Jv3= [3 / 8·N+1, 3 / 8·N+2…N / 2] . Then, segments ofare obtained as intersections with the 3 parts, in reverse or opposite  order. In the present example with S=3, the segments ofcan be expressed as follows: is split into 3 parts according to the sizes ofThat is, for all 1 ≤ s ≤ 3. Specifically, wheremeans the i-th element inFor each s in 1 ≤ s ≤ S=3 in this example, bit indices inare sorted by ascending bit index order and the sortedis denoted byand bit indices inare sorted by ascending rank (increasing reliability order, for example) and the sortedis denoted byMore generally, bit indices of the v-code are split into S unequal-sized parts in Embodiment 5. Those parts include a first part that includes the first (N / 2)  / 21 v-code bit indices, a second part that includes the next (N / S)  / 22 v-code bit indices, and so on, to an (S-1) -th part and an S-th part that each include (N / 2)  / 2 (S-1) of the final v-code indices. Other features of Embodiment 5 that are described in the context of this example of S=4 may also be extended to other values of S.Embodiment 5 may involve to an iterative approach, and if N<Nmax, then N can be set to N=2×N, and bit selection and placement as outlined above can be repeated.After one or more iterations, when target code length Nmax has been reached, polar encoding is performed. The last M code bits, indexed by [N-M+1, N-M+2 …N] , are transmitted as a rateless codeword. Multiple transmissions of increasing transmitted code length may be made up to a maximum number of transmissions or receipt of feedback indicating correct decoding, in an IR-HARQ approach for example.Fig. 28 is a diagram illustrating bit value placement, by the same labels for example, on multiple bit indices on a segment-by-segment basis according to Embodiment 5. In Fig. 28, the solid and dashed arrows at the top illustrate bit value placement on multiple bit indices, by copying bit values from u-code bit indices to v-code bit indices (the solid arrows) or separately placing bit values on u-code bit indices and v-code bit indices (the dashed arrows in combination with the solid arrows) . Reference numbers for the arrows are not shown in Fig. 28 in order to help avoid further congestion in the drawing. The top label and circle 2802 in Fig. 28 indicate segment-by-segment code rate reduction by placing fewer input bit values on multiple bit indices, and the additionally frozen indices at the left of the drawing are intended to represent the impact of code rate reduction, in that fewer information bit indices in the v-code result in more frozen bit indices.Embodiment 5 also encompasses decoding scheduling. For example, decoding scheduling may be determined according to one or more of the following conditions or rules:always decode a capacity-sufficient block of consecutive bits first;as an information bit is decoded, its associated bit value (s) on any other bit index or indices will be known and can be treated as a type of frozen bit for decoding of another block;as bit values of more information bits in another block become known from decoding bit values from other bit indices, that other block will become capacity-sufficient, and decoding can then be switched to that other block.In principle, and consistent with the conditions outlined above, a decoder can start to decode a v-code segment once it is capacity-sufficient. A segment may be considered to be capacity-sufficient once its code rate is equal to or less than its segment-wise capacity.The capacity of a segment can be offline pre-calculated, for example, according to decoding order. Fig. 29 includes diagrams illustrating capacity estimation, for sequential decoding at the left and non-sequential (reverse-serial in the example shown) decoding at the right.In the example shown in Fig. 29, each circle can represent a parallel set of bits (as in an SC decoding binary tree for example) , or each illustrated butterfly can represent a recursive decomposition of a full trellis graph into two-bit butterflies. Capacities are estimated as follows in this example:Ru=2·K / N is the code rate of the u-code, where the number of information bits in the u-code is K and code length of the u-code is N / 2;Rv is the code rate v-code;C=K / N is operating capacity of the code (including u-code and v-code) ;C-= αC2 is operating capacity of the v-code; andC+= (1+α) C-αC2 is operating capacity of the u-code.A specific example of decoding scheduling based on rate allocation is provided below with reference to Fig. 30, which includes diagrams illustrating decoding scheduling according to an embodiment. In this example, a v-code is further divided into multiple shorter v-codes, with a vi-code being complete and a vj-code (j=i+1) being punctured.How to segment a v-code depends on transmitted code length. Consider an example in which N = 134 =2+4+128, then len (v2) =2 and len (v1) =4A first step or operation in the present decoding example involves decoding the u-code until a vi-code rate decreases (as more bits are decoded) to a threshold code rate Decoding may then switch to decoding the vi-code, after which decoding of the u-code continues until vj-code rate decreases (as more bits are decoded) to another threshold code rateDecoding may then switch to decoding vj-code, after which decoding of the u-code continues to decode the u-code to the end.Three examples, with different transmitted code lengths (indicated by interior pattern in each row) and different v-code segmentation based on transmitted code length, are shown in Fig. 30. Transmitted code length is shortest in the top row and longest in the bottom row in Fig. 30. The dashed outline to the left in the two upper rows in Fig. 30 illustrates maximum code length Nmax .Another potentially more flexible decoding scheduling example is provided below. The following example may be simpler to describe, because given a v-code segmentation (which may be deterministic given any transmitted code length) , decoding scheduling can be simply described by a set of decisions, in particular to decode a u-code first or a v-code first.Any code length can be decomposed into a sum of power of 2 code lengths. For example, code length 165 can be decomposed as follows:165 (10100101b) = 1+4+32+128 = 20+22+25+27.Decoding order of multiple blocks in this example may be determined based on a “near-to-far” rule or condition, such as one of the following:Case 1: 165 = (1→4) -vs-4, (4→32) -vs-32, (4→32→128) -vs- (128) , and finally (4→32→128) →1Case 2: 165 = (1→4) -vs-4, (4→32) -vs-32, (4→32→128) -vs- (128) , and finally (128) → (1, (4→32) )Case 3: 165 = (1→4) -vs-4, (4→32) -vs-32, (32→128) -vs- (128) , and finally (32→128) → (1→4)Case 4: 165 = (1→4) -vs-4, (4→32) -vs-32, (32→128) -vs- (128) , and finally (128) → (1→4→32) .Considering Case 1 in more detail, this example is for a length-165 code, which can be decomposed into the following sum of power of 2 numbers: 1+4+32+128, corresponding to possible segmentation of the code into power of 2 length blocks for decoding.With this segmentation, initially there is a choice between two decoding options, to decode the length-1 block and then the length-4 block, or decode the -4 block first. This is expressed in Case 1 above as (1→4) versus 4. Specifically, " (1→4) " denotes decoding the length-1 block first and then decoding the length-4 block, and "4" denotes decoding the length-4 block first. The next block to decode is as yet undecided in this example.In Case 1, a determination is made to decode the length-4 block first, and then there is a choice between (4→32) -vs-32. The term " (4→32) " denotes decoding the length-4 block first and then decoding the length-32 block, and "32" means decoding the length-32 block first. Again, the next block to decode is as yet undecided .Continuing with Case 1, a determination is made to decode the length-4 block and the length-32 blocks first, and then we there is a choice between (4→32→128) -vs-128, where " (4→32→128) " denotes decoding the length-128 block after having decoded the length-4 and length-32 blocks and "128" denotes decoding the length-128 block first. As above, the next block to decode is undecided at this point.In Case 1, the final decision is to decode the length-4, length-32, and length 138 blocks first, and then return to decoding the first length-1 block, denoted by (4→32→128) →1 in the Case 1 definition above.Notation in the other example Cases is consistent with the notation for Case 1, and each Case represents a different series of decisions.One benefit of this type of decoding scheduling is that the decoding scheduling problem is reduced to a sequence of decisions.A general principle of such decoding scheduling is to decode a v-code first if possible. Decoding scheduling decisions may be made on the basis of current transmitted code length. Additional code bits may subsequently be transmitted until decoding is successful, such as additional v-code bits in an IR-HARQ approach for example.A condition or rule related to whether capacity is sufficient or deficient for decoding may instead be used to determine decoding order between two blocks. Examples of such a condition or rule include the following:without bits that are placed on multiple bit indices in vj and vi: for (vj→vi) -vs- (vi) , calculate a threshold number of information bits K* (vj) , below which the code rate for vj is sufficiently low and vj can be decoded first. If K (vj) <K* (vj) , then (vj→vi) ; else, (vi) ;with bits that are placed on multiple bit indices in vi and a u-code: for (vi) -vs- (u-code) , calculate a threshold number of information bits K* (vi) , below which below which the code rate for vi is sufficiently low and vi can be decoded first. If K (vi) <K* (vi) , then (vi→u) ; else, (u→vi) .These examples of a condition or rule related to capacity can perhaps be better understood with reference again to Fig. 30, in each row illustrates v-code segment that is only partially transmitted.Another decoding scheduling example based on what is referred to herein as block bundling is provided below. Block bundling involves merging blocks that can be serially decoded.For scheduled decoding in a block bundling embodiment, a v-code is decoded once it is capacity-sufficient. For example, decoding may involve the following:1. finding a last (i, j) v-code pair, and defining these blocks as a u-code2. calculating K* (v) for all v-codes3. decoding the u-code until a v-code can be decoded, based on a threshold of K (vj) <K* (vj) for example4. decoding that v-code, and once decoding of that v-code is complete, updating K* (v) for all remaining v-codes5. if another v-code can be decoded after the updating, then decoding proceeds by returning to 4 above; otherwise decoding proceeds by returning to 3 above.According to another decoding scheduling example, the decoding scheduling is pre-calculated as outlined below:1. for each v-code, calculate multiple thresholds K* (vj) = {K’ (v) , K” (v) , …}2. each threshold corresponds to depth 1, 2, …-Fig. 31 is a diagram illustrating such thresholds, by way of an example in which vi is depth 1, vj is depth 2, and vk is depth 33. after each v-code is decoded, its preceding v-codes are checked in "forward" order of decreasing depths, and all those with K (vj) <K* (vj) are decoded.In item 3 of this example, if a preceding v-code can be decoded, then the subsequent v-code can support more information bits. This may lead to what may be referred to as a “chain reaction” . For example, for a code with length 175=1+2+4+8+32+128 and the length-32 block being decoded first, decoding of the length-32 block may enable decoding to proceed with decoding the length-8 block, then the length-4 block may be decodable, and then the length-2 block may be decodable, and finally the length-1 block may be decodable before u-code decoding.The following is an example of an offline version of pre-calculated decoding scheduling:1. divide a polar code into power of 2 blocks2. evaluate the capacity of each block3. bundle blocks in a greedy manner (see below)4. decode the most “capacity-sufficient” block5. during or after decoding the most capacity-sufficient block, the rate and capacity of other blocks may be dynamically changing -a default or “rule of thumb” is to decode the most capacity-sufficient block at any time.For item 3 in the above example, the criterion is whether bundled blocks as a whole have lower rate-to-capacity ratio (more capacity-sufficient) than the alternative choice (e.g., to decode the u-code first) . If so, then the blocks are bundled for decoding at item 4. Using the length-175 code above as an example, the length-32 block will “bundle” with its preceding blocks (length-8, length-4, length-2, and length-1) in a greedy manner. The term “greedy” refers to a feature that, if the length-32 block bundled with the length-8 block is more capacity-sufficient than the length-32 block on its own, then the blocks will be bundled for decoding; similarly if the length-8 and length-32 blocks are bundled, then they will be further bundled with the length-4 block if the further bundled block is more capacity-sufficient; and so on. In other words, consecutive or sequential v-code blocks may be bundled together for decoding where bundled blocks are more capacity-sufficient than the blocks before bundling. This may be an iterative process, and a block to be bundled with another block may itself be a bundled block, as in the example of the length-8 and length-32 blocks being bundled and then further assessed for bundling with the next (length-4) block.Fig. 32A illustrates a first example of decoding scheduling for a length-100 code. In the illustrated Example 1, the transmitted code length is N=100, and the number of information bits is K=32. In the beginning, the most capacity-sufficient block (with the lowest rate-to-capacity ratio) is the length-32 block, and that block is decoded first as indicated by "1" in Fig. 32A above that block. After decoding the length-32 block, the capacity of the length-4 block increases because it polarizes only once instead of twice (one f-function instead of two f-functions for decoding) . As a result, the length-4 block becomes the most capacity-sufficient block that remains to be decoded, and will be decoded next as indicated by "2" in Fig. 32A above that block. Finally, the length-64 u-code block, which is the only block remaining to be decoded, is decoded as indicated by "3" in Fig. 32A above that block.Fig. 32B illustrates a second example of decoding scheduling for a length-100 code. In the illustrated Example 2, the transmitted code length is N=100, and the number of information bits is K=48. In the beginning, the most capacity-sufficient block (with the lowest rate-to-capacity ratio) is the length-64 block, and decoding of that block begins first as indicated by "1" in Fig. 32B above that block. As that block is decoded, more and more information bits for the length-4 and length-32 blocks will be known. In this example, the length-32 block will become the most capacity-sufficient block because K (v1) will gradually reduce as more of the information bits in that block become known from the u-code (length-64 block) decoding. At this point, decoding switches to decoding the length-32 block as indicated by "2" in Fig. 32B above that block. Upon completion of decoding the length-32 block, in Example 2 the length-64 block is the most capacity-sufficient block among the remaining blocks, and therefore decoding of that block continues as indicated by "3" in Fig. 32B above that block. As this decoding of the length-64 block proceeds, more and more information bits in the length-4 block will be known from the u-code decoding. As a result, the length-4 block becomes the most capacity-sufficient remaining block in Example 2, because K (v2) gradually reduces and thus the rate-to-capacity ratio of that block also reduces. Decoding then switches to decoding the length-4 block as indicated by "4" in Fig. 32B above that block. Upon completion of decoding the length-4 block, decoding the length-64 block continues as indicated by "5" in Fig. 32B above that block, until decoding is completed.Decoding scheduling introduces a new degree of freedom that can create more coding gain for polar codes.Illustrative Embodiment 6Another embodiment disclosed herein is referred to as Embodiment 6. Embodiment 6 inherits features from Embodiment 5, but with different input bit value placement.As in Embodiment 5, in Embodiment 6 and I’ v are sorted, the sorted bit indices in are split into segments according to their bit positions in the v-code, is split into parts according to the sizes of and bit indices in are sorted by ascending bit index order and the sorted is denoted by In Embodiment 5, bit indices in are sorted by ascending rank, but in Embodiment 6 these bit indices are sorted by descending bit index order in This different sorting order for the bit indices in results in reverse order placement of bit values to bit indices between the u-code and the v-code. This may enable more timely updates to code bits in the v-code, and may enhance the overall reliability of the u-code. Performance improvement may be most evident when the length of v-code is close to but greater than a power of 2, such as a power of 2 plus 20%for example.Fig. 33 is a diagram illustrating bit value placement, by the same labels for example, on multiple bit indices on a segment-by-segment basis according to Embodiment 6. In Fig. 33, the solid and dashed arrows at the top illustrate bit value placement on multiple bit indices, by copying bit values from u-code bit indices to v-code bit indices (the solid arrows) or separately placing bit values on u-code bit indices and v-code bit indices (the dashed arrows in combination with the solid arrows) . Reference numbers for the arrows are not shown in Fig. 33 in order to help avoid further congestion in the drawing. The top label and circle 3302 in Fig. 28 indicate segment-by-segment code rate reduction by placing fewer input bit values on multiple bit indices, and the "Additionally frozen" label at the left indicates bit indices that are additionally frozen, or otherwise no longer used for placement of bit values of input bits. The additionally frozen bit indices are intended to represent, by way of example, the impact of code rate reduction, in that fewer bit indices in the v-code are used for placement of input bit values, which in effect may result in more frozen bit indices in some embodiments. Reverse bit index as referenced in Fig. 33 relates to different sorting order for the bit indices in according to Embodiment 6. In Fig. 33, sort order before segmentation is decreasing bit index order from right to left in the drawing, and then within each segment the sort order is decreasing bit index order (reverse bit index order) from left to right.Other features disclosed herein for Embodiment 5, including decoding scheduling, may also or instead be implemented in Embodiment 6.Illustrative Embodiment 7Yet another illustrative embodiment disclosed herein is referred to as Embodiment 7, and may inherit features one or more other embodiments but use a potentially more powerful approach to decoding scheduling. In particular, Embodiment 7 focuses primarily on determining decoding scheduling, given a code construction (bit index selection and bit value placement) . For example, offline searching may be used to determine effective, and possibly optimal or near-optimal, decoding scheduling for any code construction and transmitted code length M.For example, decoding according to Embodiment 7 may involve finding or determining a decoding starting point such that the sequential decoding performance is the best. Fig. 34 is a diagram illustrating different starting points for evaluating sequential decoding performance according to an embodiment. In Fig. 34, different starting points are indicated at sp1, sp2, sp3, sp4. Sequential decoding performance evaluation for different starting points may be heuristic.Sequential decoding, from the decoding starting point with the best decoding performance, can be enhanced by decoding scheduling. For example, decoding may involve decoding the v-code from the determined starting point and then decoding the u-code, but before decoding a bit value on every information bit index, a determination may be made as to whether to decode the part of the v-code that is before the starting point (or a subblock in the v-code) , based on one or more criteria conditions such as block error rate (BLER) . BLER is one example of a criterion or condition for opportunistically determining whether to proceed with u-code decoding or switch to v-code decoding. Other decoding performance criteria or conditions may also or instead be used.In a BLER example, BLER of a v-code subblock with punctured and / or shortened bits may be determined, and similarly a “local” BLER, related to a subset of information bit indices corresponding to the v-code subblock, is also determined. The v-code BLER and the local u-code BLER are respectively denoted herein as BLERv and BLERu.For ease of reference, v-code decoding before proceeding with u-code decoding is denoted "v2u" , and proceeding with u-code decoding rather than switching to v-code decoding is denoted "u2v" . The following is an example of BLER evaluation or determination for v2u:BLERv2u = 1- (1-BLERv) * (1-BLERu) .With a switch to v-code decoding before proceeding with u-code decoding, some of the bit values on information bit indices in u-code will be known from the v-code decoding and can in effect become frozen in the u-code. In this sense, the v-code decoding can help the u-code decoding.The following is an example of BLER evaluation or determination for u2v:BLERu2v = BLERu .With no switch to v-code decoding before u-code decoding, the u-code decoding is not helped by v-code decoding, and therefore the u2v BLER in this example corresponds to the u-code local BLER. The v-code information bit index values are known after the u-code decoding.In this example, decoding may be v2u if BLERv2u < BLERu2v, and u2v otherwise. Whether decoding is v2u or u2v, the fork or split in decoding will join together after either decision. After u2v or v2u, the information bits in both the v-code and the u-code are decoded.In accordance with a general principle that is also discussed elsewhere herein, if a v-code or v-code segment is decodable then first decode the v-code or segment, and then decode the u-code or a part of the u-code. When a v-code or a segment thereof is capacity-sufficient, it may generally be preferable to decode it as early as possible.This type of decoding process may be iterative, in that if the u-code is not completely decoded, then BLER may be re-evaluated and decoding proceeds as outlined above, for different u-code and v-code subblocks.Again, it is noted that BLER is just an example, and other embodiments may use one or more other criteria or conditions, instead of or in addition to BLER, in determining whether to proceed with u-code decoding or to switch to v-code decoding.In order to further illustrate this type of decoding approach, consider an example in which the same two bit labels i and j are used to place two bit values on two bit indices in each of a v1-code and a u-code. Bit labels are used here solely as an example, as a convenient way to refer to two input bit values that are placed on multiple bit indices. As also noted elsewhere herein, bit labels need not necessarily be used to place input bit values on multiple bit indices.Continuing with this example, further suppose that it is to be determined whether to decode each of these two input bit values in the v1-code first (v2u) , or in the u-code first (u2v) . There are six possible decoding options, as follows:v2u (j, i)u2v (i, j)v2u (i) → v2u (j)u2v (i) → u2v (j)v2u (i) → u2v (j)u2v (i) → v2u (j) .These options include the first two block-wise decoding options and four bit-wise or bit-by-bit decoding options.Fig. 35 includes diagrams illustrating input bit values placed on v-code and u-code bit indices, and different decoding scheduling options for those input bit values according to an example. In the upper part of Fig. 35, the labels i and j are shown in both a v-code and the u-code, indicating that one bit value assigned to label i is placed on two bit indices including one in the v-code and one in the u-code and similarly another bit value assigned to label j is placed on two bit indices including one in the v-code and one in the u-code. The diagram in the lower part of Fig. 35 illustrates the decoding options listed above. The two longer arrows or edges represent the two block-wise decoding options, and the four shorter arrows or edges represent the bit-by-bit decoding options.In the lower diagram in Fig. 35, each edge may also be considered as representing a path and specific decoding scheduling, and each node may be considered as representing a state. State refers to current decoding state, which may be considered a form of time stamp, in that, at any time during decoding, certain bits have been decoded and others remain to be decoded. With reference to the lower diagram in Fig. 35, for example, the node 3502 represents a state in which the bit values assigned to labels i and j have not yet been decoded, the node 3504 represents a state in which the bit value assigned to label i has been decoded but the bit value assigned to label j has not yet been decoded, and the node 3506 represents a state in which the bit values assigned to labels i and j have both been decoded. Decoding of a current bit value is represented by an edge on the graph, and after visiting that edge, the current bit value has been decoded.An optimal decoding path up to the current bit value may be denoted ps, and associated BLER up to the current bit value may be referred to as optimal BLER and denoted BLERs.The path 3510 in Fig. 35 represents u2v decoding of the bit value assigned to label i, according to which the bit value is decoded for the u-code and then that bit value is known for the v-code. The path 3512 is similar, but for v2u decoding of the bit for the v-code, which is then known for the u-code.From state 3504, bit-by-bit decoding may proceed with path 3520 (u2v) or path 3522 (v2u) for the bit value assigned to label j. That bit value may be decoded from either the u-code (path 3520) or the v-code (path 3522) , and then would be known for the v-code or the u-code, respectively.The paths 3530 and 3532 also represents u2v and v2u decoding, respectively, but for a multi-bit subblock or segment rather than bit-by-bit decoding. The path 3530 represents decoding the bit values assigned to labels i and j from the u-code, and then updating those bit values in the v-code, and similarly the path 3532 represents decoding the bit values assigned to labels i and j from the v-code, and then updating those bit values in the u-code. Such subblock or segment decoding may involve delayed updates of known bit values (decoded from one code) to the other code. Delayed updates may reduce complexity associated with switching between decoding and updating.Decoding of a bit value need not be dependent upon how a preceding bit value was decoded. For example, decoding of the bit value assigned to label j may follow either path 3520 or path 3522, regardless of whether node 3504 was reached along path 3510 or 3512. Similarly, the node 3502 may have been reached via a bit-by-bit path or a subblock path, but any of the paths 3510, 3512, 3530, 3532 in the example shown may be followed for decoding the bit value assigned to label i.The example in Fig. 35 relates to two labels and bit values. However, this type of decoding scheduling can be extended to any number of bit values, and is not in any way limited to embodiments that use labels. Fig. 36 includes diagrams illustrating input bit values placed on v-code and u-code bit indices, and different decoding scheduling options for those input bit values according to another example.In the example shown in Fig. 36, there are 5 bit values, each mapped to a bit index in each of the v1-code and the u-code, and i, j, k, l, and m are bit labels that are used in this example to place the bit values on the bit indices. At the left in the lower diagrams in Fig. 36, o represents a starting state. The solid line paths represent possible decoding scheduling up to the bit value assigned to label l in this example, the heavy solid line paths represent the optimal path and decoding scheduling up to the bit value assigned to label l, the dashed line paths represent possible decoding scheduling up to the bit value assigned to label m in this example, and the heavy dashed line paths represent the optimal path and decoding scheduling up to the bit value assigned to label m.In Fig. 36, an edge labeled by 1 indicates u2v decoding, and an edge labeled by 0 indicates v2u decoding, as indicated in the "Action" legend in the drawing. Fig. 36, in addition to representing input bit value placement and decoding options, also illustrates that searching for optimal or near-optimal decoding scheduling may involve path searching, for an optimal or near-optimal path. One possible way to simplify such searching is to establish preferred decoding scheduling. For example, bit-by-bit decoding may generally be preferred over subblock or segment decoding of a u-code, so that decoding can switch to v-code decoding as soon as it is possible to decode from a v-code. For example, bit-by-bit decoding from u-code and updating the v-code with known bit values as they are decoded from the u-code may be preferred over subblock-wise decoding of the u-code, or using the notation introduced above, u2v (i) → u2v (j) may generally be preferred over u2v (i, j) , so that later decoded bit values (the bit value assigned to label j in this example) can benefit from codeword LLR enhancement provided by bit-by-bit updates (rather than delayed multi-bit updates) from v-code to u-code during decoding.Decoding scheduling preferences represent an example of a possible simplification to reduce the number of paths to be included in a search, as illustrated in the diagram at the bottom in Fig. 36, compared to the middle diagram that includes all possible decoding scheduling options.In order to determine a "global" optimal path and decoding scheduling among the possible options, all paths are evaluated in some embodiments. For example, global optimal path searching may be solved by a dynamic programming, as illustrated by way of example as follows, for a global optimal path up to the input bit value assigned to label m in Fig. 36:BLERm = 1;For each previous state s in {o, i, j, k, l} ,For action a in {0, 1}Path pm, a= (ps→a)BLERm, a= 1- (1-BLERs) * (1-BLERa)If BLERm, a< BLERmPath pm=Path pm, aBLERm = BLERm, aIn this example, for each previous state and an action a∈ {0, 1} , representing {u2v, v2u} , an associated BLER is compared with BLERm and the optimal path and decoding scheduling is determined based on BLER. The end result is identification or determination of a decoding path, such as a sequence of bit indices, which a decoder uses to determine decoding scheduling.In some embodiments, the decoding scheduling is determined by the decoder or at a receiving device without receiving, from an encoder or transmitting device, signaling or other inputs related to decoding scheduling. In other embodiments, one or more parameters related to decoding scheduling, or an indication of decoding scheduling such as a sequence of bit indices, may be signaled or otherwise provided to a decoder or receiving device. Such parameter (s) or an indication may also or instead be provided in a communication standard or specification. In these latter examples, the decoder or decoding device may determine the decoding scheduling based on the parameter (s) or indication.The foregoing is an illustrative example. Embodiment 7, and other embodiments herein, are not in any way limited to this example.Illustrative Embodiment 8Another embodiment disclosed herein, referred to as Embodiment 8, may inherit features one or more other embodiments. For example, code construction in Embodiment 8 may inherit features from Embodiment 6, and decoding scheduling in Embodiment 8 may inherit features from Embodiment 7 but further simplify searching for decoding scheduling by an approach that is referred to herein as progressive searching.In one form of progressive searching, a "greedy" searching algorithm is used, and exploits similarity of scheduling for similar code lengths, such as … (M-1, K) , (M, K) , (M+1, K) …codes. This can significantly reduce searching space.The u2v and v2u decoding scheduling as disclosed herein may be summarized as follows:u2v: after decoding a bit value for an information bit index in the u-code, the bit value for a corresponding bit index on which the same input bit value was placed is known, and that v-code bit index can, in effect, be frozen in the sense that its bit value is known;v2u: after decoding input bit values for all information bit indices in a v-code or a v-code subblock, the bit values for corresponding bit indices on which the same input bit value was placed is known, and those u-code bit indices can, in effect, be frozen in the sense that their bit values are known, before decoding proceeds with u-code decoding.Some insights can be exploited to find decoding scheduling or simplify searching for optimal decoding scheduling. For example, it is expected that bit-by-bit u2v decoding will yield good performance in most cases. If the v-code includes all information bits (rate-1) , then u2v decoding might be performed only if the v-code information bits are unreliable and performing v2u decoding would lead to performance loss. If the v-code has not only information bits but also frozen bits, then it is possible to opportunistically attempt v2u decoding, especially when information bit indices in the v-code are likely to be quite reliable, such as when there is a series of frozen bits preceding an information bit. If v2u decoding is found to be better, then a “switching point” can be set on its right side (i.e., toward the u-code) . A switching point is a bit index at which u2v is performed for preceding bit indices before the switching point, and u2v is performed for subsequent bit indices after the switching point.Progressive searching is described by way of example below, in the context of gradually increasing transmitted code length by 1 code bit.Optimal decoding scheduling within a current v-code or v-code subblock may first be determined. If a next code bit, which may be referred to as an additionally transmitted code bit, corresponds to an information bit in the current v-code or v-code subblock, then u2v may be optimal because an additional transmitted code bit increases the code rate of the current v-code or v-code subblock. In this case the switching point is bit index N-M+1. Otherwise, if the additionally transmitted code bit corresponds to a frozen bit in the current v-code or v-code subblock, then decoding may opportunistically try v2u, to determine whether v2u leads to better performance, and greedily push the switching point toward u-code.The optimal decoding scheduling for a current v-code, including the switching point, may be saved to memory or otherwise recorded, and the v-code length is again increased, by 1 in this example, and the progressive searching is repeated for the new additionally transmitted code bit, until transmitted code length reaches Nmax.In this example, transmitted code length is increased by 1 for each progressive search iteration. Other increments may also or instead be used.Fig. 37 is a diagram illustrating progressive searching according to an embodiment. The example shown in Fig. 37 illustrates how u2v decoding (upper arrows pointing left in the top two rows) , v2u decoding (lower arrows pointing right in each row) , and switching points between v2u and u2v decoding, change as additionally transmitted code bits are considered during progressive searching. The bottom row in Fig. 37 includes only v2u decoding. The arrows below the bottom row in Fig. 37 indicate skipping of decoding for some bit indices, because when the code rate of the v-code rate reduces below a threshold, it is not necessary to further evaluate (compare between v2u and u2v) , and a determination v2u decoding is better can be made based on the code rate. This can help further reduce searching complexity.Progressive searching is one technique that may be used to determine decoding scheduling, and examples of decoding scheduling are illustrated in Figs. 32A and 32B and also provided elsewhere herein.Other options that may also or instead be used to reduce search space while preserving performance are also possible.For example, searching may be limited to a set of predetermined or pre-customized scheduling options, such as the following options to adapt a previous decoding schedule as additionally transmitted bits are considered in progressive searching:u2v, which may be a baseline option;u2v2u, which may be considered more aggressive than the u2v baseline option: opportunistically decode more v-code bits first, before u-code decoding begins or proceeds;v2v2u, which may be considered more aggressive than the u2v2u option: decode all v-code first, possibly with non-sequential decoding within the v-code;v2u, which may be considered the most aggressive option in terms of v-code decoding: pure sequential decoding.Fig. 38 is a diagram illustrating these example decoding scheduling options. Based on BLER and / or one or more other conditions or criteria, the decoding scheduling option with the best performance may be selected.Illustrative Embodiment 9Another illustrative embodiment is referred to herein as Embodiment 9. Code construction in Embodiment 9 inherits features from Embodiments 3, 4, 5 and 6, and uses bit value placement, by labeling for example, based on v-code segment partial code rate. Such bit value placement may be referred to as rate-aware hybrid bit value placement, or rate-aware hybrid bit labeling where labels are used in placing bit values on bit indices.For example, rate-aware hybrid bit value placement may involve applying reverse or descending bit index ordering to a v-code segment and forward or ascending bit index ordering to a u-code if the v-code segment partial code rate is higher than a threshold, and applying ascending rank ordering (such as reliability ordering) to a v-code segment and ascending rank ordering (such as reliability ordering) to a u-code if the v-code segment partial code rate is lower than the threshold. Under the condition of the v-code segment partial code rate being equal to the threshold, either of these v-code and u-code ordering rule pairs may be applied.Partial code rate refers to a ratio between the number of information bit indices or information bits in a segment and the number of all bit indices or bits in that segment.As in Embodiment 3, for example, may be split into S segments (S=4, for example) according to bit indices in the v-code. This may be accomplished by splitting the v-code bit indices into S equal-sized and unique segments, each with (N / 2)  / Sv-code indices, denoted as follows for ease of reference: Jv1= [1, 2…N / S / 2] , Jv2=Jv1+ N / S / 2, …, JvS= [N / 2-N / S / 2+1, N / 2-N / S / 2+2, …, N / 2] . Then, the S segments ofare the intersections betweenand respective ones of the S equal-sized parts, in reverse or opposite order, from the S-th part to the first part. The S segments ofand the set intersections upon which they are based may be expressed as follows: Note that the index order within each segment remains the same as before the intersection.Also consistent with Embodiment 3, can be split into S parts according to sizes ofThat is, for all 1 ≤ s ≤ S. Specifically, wheremeans the i-th element inFor each s in 1 ≤ s ≤ S:if the partial code rate Rvs ≤ Rth, where Rth is a threshold, then sortby ascending rank order (such as reliability order) and sortby ascending rank order (such as reliability order) ;otherwise if the partial code rate Rvs > Rth, then sortby descending bit index order and sortby ascending bit index order.The sortedandmay be denoted byandrespectively, for ease of reference.Bit value placement, by bit labeling for example, may then proceed based onandConsistent with Embodiment 9, bit value placement, by bit labeling or otherwise, may prioritize rank such as reliability in v-code for placement of input bit values, or prioritize reverse bit index in v-code for placement of input bit values.Illustrative Embodiment 10Embodiment 10 as referenced herein relates to a specific example of a rateless (16 ≤ M ≤ 32, K=16) code, including the code construction (bit index selection and bit value placement) and progressive searching for decoding scheduling.For ease of reference, ds (M) denotes decoding scheduling for the length-M code, and progressive searching obtains and outputs ds (M+1) , which is the decoding scheduling for the length- (M+1) code. In other words, determining the decoding scheduling for a length- (M+1) transmitted code length can reuse, inherit, or be based on, decoding scheduling that was determined for a next shorter length-M transmitted code, and need not start from a length-1 transmitted code.Fig. 39 illustrates a rateless (16≤M≤32, K=16) code as an example. The present disclosure is not in any way limited only to this example.Transmitted code length M and bit indices are indicated at the top in Fig. 39. The numbers inside the blocks corresponding to the bit indices indicate labels that, in this example, are assigned to bit values and used in placing the bit  values on the bit indices. As shown, all of the input bit values placed on bit indices of the v-code using the labels 1, 2, 3, 4, 5 are also placed on bit indices in the u-code using those same labels.The numbers below the blocks in Fig. 39 indicate decoding scheduling, and refer to bit indices in the order in which decoding for those bit indices is to be performed for each transmitted code length. The decoding scheduling changes as transmitted code length increases. In the example shown, transmitted code length increases in increments of one code bit at a time.Decoding scheduling for each transmitted code length is determined, in the example shown, according to a scheduling searching approach that may be referred to as “mathematical induction” type or style of scheduling searching.In this type of scheduling searching, if a new v-code bit corresponds to an information bit, then perform u2v decoding and insert the new v-code bit index into the previous decoding scheduling after the associated u-code bit index on which the same input bit value is placed. As an example, compare the decoding scheduling in the first two rows below the blocks in Fig. 39, for ds (16) and ds (17) . The new code bit for M=17 corresponds to bit index 16, which is an information bit index to which bit label 1 is assigned, or in other words the information bit index on which the bit value assigned to bit label 1 is placed. That same label is also assigned in the u-code, to place the same bit value on bit index 17. Under these conditions, according to mathematical induction type scheduling searching, u2v decoding is used as indicated below the block for bit index 16, and the bit index 16 is inserted into the decoding order after bit index 17 in ds (17) . The same applies to bit indices 15 and 14, in ds (18) and ds (19) .The decoding scheduling as shown in the first four rows in Fig. 39 illustrate how decoding scheduling for a length M+1 transmitted code length may inherit previous decoding scheduling for a length M transmitted code length. These examples also indicate a form of mathematical induction that may be used to reduce the amount of searching involved in determining decoding scheduling. For a new code bit that corresponds to an information bit index, u2v is preferred and the bit index is inserted into the inherited previous decoding scheduling instead of searching for the optimal or near-optimal decoding scheduling for all shorter transmitted code lengths. Thus, determining decoding scheduling for different transmitted code lengths may involve searching for some, but not necessarily all, transmitted code lengths.If a new v-code bit corresponds to a frozen bit index, then searching may encompass opportunistically trying u2v2u, v2v2u, and v2u decoding, and then selecting the decoding option, which may be u2v, that provides the best performance according to one or more criteria or conductions such as BLER as disclosed elsewhere herein. In the example shown in Fig. 39, the searching for each transmitted code length in which a new v-code bit corresponds to a frozen bit index identifies decoding scheduling other than u2v.Combinations of EmbodimentsFeatures that are disclosed herein may be implemented independently or in any of various combinations. For example, features disclosed by way of example in the context of particular illustrative embodiments are not restricted only to those embodiments.As an example, consider features related to bit value placement, which may be applied to bit labeling or more generally to placing bit values on bit indices. The bit placement examples described at least above with reference to Figs. 23, 24, and 26 involve several sort options, and may be considered examples of “single segment mapping” , whereas the bit placement examples and sorting options described at least above with reference to Figs. 25, 27, 28, and 33 also involve several sort options and may be considered examples of “multiple segment mapping” .Single segment mapping or multiple segment mapping may be preferred in different embodiments, depending on one or more criteria such as either or both of code length and code rate of a current mother code.The following examples illustrate possible criteria for selection between single segment mapping or multiple segment mapping. Other criteria may also or instead be used.If the mother code length N ≥ 512, then adopt multiple segment mapping, because for higher mother code lengths or longer codes, finer segmentation with different mapping may help better match segment-wise code rate with capacity. This can lead to better performance when transmitted or otherwise output code length is close to but greater than N / 2, such as N / 2 plus 20%for example.If the mother code rate K / N > 3 / 8, then adopt multiple segment mapping, because when mother code rate is high, the gap between segment-wise code rate and capacity is larger, and bit value placement based on multiple segments may be useful to narrow this gap and thereby lead to better performance for at least certain code lengths. Performance may be improved for transmitted or otherwise output code lengths close to but greater than N / 2, such as N / 2 plus 20%in an example above.If the mother code length N ≤ 128, and mother code rate K / N ≤ 3 / 8, then adopt single segment mapping, because for shorter mother code lengths and mother code rate is low, single segment mapping may be sufficient in closing the gap between segment-wise code rate and capacity, again potentially leading to better performance for at least certain code lengths such as for transmitted or otherwise output code length of N / 2 plus 20%in an example above, or more generally close to but greater than N / 2.If the mother code length N ≥ 256, and the mother code rate K / N ≤ 3 / 8, then adopt multiple segment mapping with subblock-wise rate reduced bit labeling, because for higher mother code lengths, finer segmentation with different mapping may be useful when the mother code rate is low. Moreover, subblock-wise reduced code rate bit labeling may be useful in closing the gap between segment-wise code rate and capacity in certain subblocks. This can lead to better performance at least for certain code lengths, such as when transmitted or otherwise output code length is close to but greater than N / 2, which is N / 2 plus 20%in an example above.More generally, bit value placement on multiple bit indices may be dependent upon one or both of a code length and a code rate of a mother code. Considering a first bit index (in a u-code for example) for placement of a bit value and a second bit index (in a v-code for example) for placement of the same bit value, the second bit index may be dependent upon one or both of code rate and code length of a mother code. Input bits are encoded by the mother code to obtain a number of encoded bits, and in this sense the code length of the mother code may be considered a code length of the number of the encoded bits, and similarly a code rate of the mother code may be considered a code rate of the number of the encoded bits.Selection between bit value placement in a single segment approach and a multiple segment approach is perhaps most relevant to applications or scenarios in which multiple input bit values are each to be placed both on a respective first bit index (in a first subset such as a u-code) and on a respective second bit index (in a second subset such as a v-code) . In this context, the respective second bit indices may be based on a sort order of bit indices in the second subset (for single segment mapping) , or based on both the sort order of the bit indices in the second and unique segments of the bit indices in the second subset that respectively correspond to unique segments of the bit indices in the first subset. Figs. 25, 27, 28, and 33 all show, by way of example, unique subsets of bit indices in different subsets, with respective bit values being placed on both a first bit index in one subset and a second bit index in another subset.Whether the respective second bit indices are based on the sort order of the bit indices in the second subset, or are based on both the sort order and the unique segments of the bit indices in the second subset, may be dependent upon one or both of: a code length of the number of the encoded bits obtained by encoding (also referred to herein as code length of a mother code or mother code length) and a code rate of the number of the encoded bits (also referred to herein as code rate of a mother code or mother code rate) .OverviewVarious aspects of the present disclosure are described herein and shown in the drawings by way of example. Fig. 40 is a flow diagram illustrating more general example methods according to embodiments. At the left, 4000 in Fig. 40 illustrates operations or features that may be provided or supported at an encoder or transmitter-side device, and at the right, 4050 illustrates operations or features that may be provided or supported at a decoder or receiver-side device. For ease of reference, in the following description of Fig. 40, a device at which encoding and / or transmitting features may be implemented or supported is called a first communication device, and a device at which decoding and / or receiving features may be implemented or supported is called a second communication device. Embodiments may involve either or both of such devices.With reference first to 4000, from a transmitting device perspective the outputting of encoded bits at 4008 may involve transmitting the encoded bits. Encoded bits may be output through or via any of various types of interface, including a communication interface in the case of transmitting the encoded bits. Embodiments are not in any way restricted to any particular type of interface. The encoded bits may be transmitted at 4008 by a first communication device to a second communication device in a wireless communication network, for example.The encoded bits are obtained by encoding input bits by a polar code at 4006, and may be referred to as encoded bits encoded by the polar code. Encoding at 4006 may be implemented or performed by an encoder or a processor, for example, and outputting the encoded bits at 4008 need not necessarily involve transmission of the encoded bits. The encoded bits may be output at 4008 for storage to memory for example, and / or transmission.A polar code comprises or provides bit indices for placing bit values before encoding. The bit indices include a first set of bit indices for placing values of input bits, and a second set of bit indices for placing a predetermined bit value. The first set of bit indices includes a first subset of bit indices and a second subset of bit indices.Regarding the first set and the second set of bit indices, an information set including bit indices for placement of input bit values is an example of the first set, and a frozen set including bit indices for placement of a predetermined frozen bit value is an example of the second set. A subset including information bit indices in the u-code, denoted Iu herein (but not including any virtual information bits that may be used in some embodiments) , is an example of the first subset, and a subset including information bit indices in the v-code, denoted Iv herein, is an example of the second subset. In one u-code and v-code embodiment, with a total number of the bit indices denoted N, the first subset of bit indices may be in an upper set of N / 2 bit indices that includes (N / 2+1) -th to N-th bit indices of the N bit indices, and the second subset of bit indices may be in a lower set of N / 2 bit indices that includes first to (N / 2) -th bit indices of the N bit indices. This is an example only, and embodiments are not limited to an upper set and a lower set of half the bit indices. For example, there can be multiple upper sets and lower sets as code length is recursively extended or increased as described by way of example at least above.Values of the input bits include an input bit value that is placed on both a first bit index in the first subset and a second bit index in the second subset. The first bit index is based on a first sort order of the first subset of bit indices, and the second bit index based on a second sort order of the second subset of bit indices. Placement of bit values on bit indices is shown at 4004 in Fig. 40, but may be part of the encoding at 4006 in some embodiments. Examples of different sort orders based upon which the first and second bit indices may be determined are provided elsewhere herein. Although reference is made here to an input bit value that is placed on both a first bit index in the first subset (e.g., a u-code information bit index) and a second bit index in the second subject (e.g., a v-code information bit index) , embodiments may involve placing one, or more than one, bit value on multiple bit indices.Bit values may be placed on bit indices in the first subset before or after the bit indices are sorted according to the first order. Regardless of whether bit value placement is before or after sorting of the bit indices in the first subset, any bit values that are also to be placed on bit indices in the second subset are determined based on the bit indices in the first subset, in the first sort order. In at least this sense, the first bit index referenced above is based on the first sort order. Further placement of an input bit value also on a bit index in the second subset is based on the second sort order according to which the bit indices in the second subset are sorted.Another operation that may be involved in a method according to some embodiments is illustrated at 4002. Obtaining input bits for encoding may involve, for example, collecting or otherwise receiving data outputs from one or more devices and / or services, or accessing data in a memory.Embodiments may include any or all of the operations illustrated at 4000. For example, in some embodiments, a method may involve placing bit values on bit indices as shown at 4004, encoding as shown at 4006, and transmitting or otherwise outputting encoded bits at 4008. Other embodiments may involve transmitting or otherwise outputting, at 4008, encoded bits that have already been obtained by encoding input bits by a polar code. Such embodiments are not mutually exclusive, and methods may involve the obtaining, placing, and encoding 4002, 4004, 4006, and also outputting encoded bits as shown at 4008.Features may be implemented in any of various ways, and / or other features may also or instead be provided or supported.For example, not all encoded bits are necessarily output at 4008. In some embodiments, a subset of the encoded bits corresponding to the first subset of bit indices, which are u-code bits in some embodiments, are output. Additional code bits may subsequently be output.Consider an embodiment that involves transmitting encoded bits. The first subset of encoded bits may be transmitted from a first communication device to a second communication device in a wireless communication network. According to an IR-HARQ approach, if the transmitted bits are not successfully decoded, then one or more additional code bits may be transmitted, in each of one or more incremental transmissions. Some embodiments may involve further transmitting in an incremental transmission from the first communication device to the second communication device in the example above, a second subset of the encoded bits corresponding to the second subset of bit indices. This second subset may include one or more additional encoded bits, and there may be more than one incremental transmission of the same number or different numbers of additional encoded bits.Outputting at 4008 may involve transmitting in some embodiments, or these features may be implemented separately, by an encoder and a transmitter for example. The encoding at 4006 may generate a number of encoded bits, and all of those encoded bits may be output at 4008. However, as illustrated by way of example in the IR-HARQ example above and puncturing examples provided elsewhere herein, not all of the encoded bits are necessarily output or transmitted at once.Regarding sort orders, the first sort order may be different from the second sort order in some embodiments. In Embodiment 1 above, for example, the first sort order is an ascending order of rank. With reference to Fig. 23, for example, the ascending order of rank is associated with the upper set of N / 2 bit indices (the u-code in the example shown) . The first sort order may or may not be applied only to bit indices in the first subset. For example, some embodiments may involve virtual information bits to track input bit values that cannot be placed on bit indices in the first subset, where K > N / 2 as described by way of example at least above. The first sort order may also be applied to bit indices and ranks that are assigned to any virtual information bits, for example. If input bit values that cannot be placed on bit indices in the first subset are tracked in some other way, then the first sort order, or more generally placement of bit values on the bit indices in the second subset at 4004 or in encoding at 4006, for example, may take those non-placed input bit values into account. These are examples of how input bit values that cannot be placed on bit indices in the first subset may be given preference or priority for placement on bit indices in the second subset.The first sort order, and / or the second sort order, may be applied to all bit indices in a set or subset, or only to some of those bit indices. For example, the first sort order may be applied to the bit indices in the first subset on which bit values that are also to be placed on bit indices in the second subset are to be placed, denotedherein. For placement of bit values on multiple bit indices, it is possible that only these bit indices in the first subset are sorted according to the first sort order.References to sort orders associated with or applied to bit indices in sets, subsets, or segments of bit indices should be interpreted accordingly. Such sort orders may include other bit indices (for virtual information bits for example) , and / or need not necessarily be applied to entire sets, subsets, or segments.The descending bit index order associated with the v-code bit indices in Fig. 23 is an example of a second sort order, different from the example first sort order in Fig. 23, associated with a lower set of N / 2 bit indices.Embodiment 2 above is illustrative of another example of sort orders. In Embodiment 2, and as shown by way of example in Fig. 24, the first sort order is an ascending index order associated with the u-code bit indices, which is the upper set of N / 2 bit indices according to an example above. The second sort order in Fig. 24 is, as in Embodiment 1 and Fig. 23, a descending index order associated with the v-code, which is the lower set of N / 2 bit indices in an example above.In Embodiment 3 above and as shown by way of example in Fig. 25, the u-code (which may be the upper set of N / 2 bit indices in an example above) includes a number (Sabove) of unique segments of bit indices, and the v-code (which may be the lower set of N / 2 bit indices in an example above) includes a corresponding number S of unique segments of bit indices. Four segments are shown in Fig. 25, but there may be more or fewer segments in other embodiments.Within this context, the first bit index is in one of the S unique segments of bit indices, and the second bit index is in a respective one of the corresponding S unique segments of bit indices. In Fig. 25, each bit value that is to be placed on multiple bit indices is placed on one bit index in one u-code or upper set unique segment and on one bit index in a respective one of the corresponding v-code or lower set unique segments.The first bit index, in a u-code or upper set segment, may be further based on a third sort order of the bit indices within each of the S unique segments, and the second bit index, in a u-code or upper set segment, may be further based on a fourth sort order of the bit indices within each of the corresponding S unique segments. As described in further detail at least above, segment-by-segment bit value placement may be based on ordering of bit indices in each segment. Bit index order in each segment may be the same as in an overall order across all bit segments, in the sense that bit indices in each segment need not be re-ordered after bit indices in the first subset and the second subset are sorted. The first sort order and the second sort order may remain the same across each subset as a whole. However, a third sort order and a fourth sort order within segments are referenced to indicate orders of bit indices within each segment. For example, both the first sort order and the third sort order may be the same order such as an ascending order of rank or bit indices, but the third sort order indicates the order of bit indices in each segment. Similarly, the second sort order and the fourth sort order may be the same order, with the second sort order indicating a sort order across all segments and the fourth sort order indicating a sort order within each segment.More generally, bit indices may or may not retain the sort order of a larger set of bit indices before the larger set is divided into segments.The example in Fig. 25 illustrates an example of u-code or upper set per-segment third sort order of ascending of rank, with reliability as a particular example of rank, associated with the bit indices within each of the S unique segments. The first sort order across the upper set may be the same or different, such as ascending index order associated with the u-code or upper set of bit indices.In another embodiment, the third sort order is an ascending index order associated with the bit indices within each of the unique segments of the u-code or upper set. Again, the first sort order may be the same or different.The fourth sort order may be an ascending order of rank associated with the bit indices within each of the corresponding unique segments of the v-code or lower set, and the second sort order may be the same or different. In the example shown in Fig. 25, the fourth sort order is a descending index order associated with the bit indices within each of the corresponding unique segments of the v-code or lower set, and again the second sort order may be the same or different.The values of the input bits may include multiple input bit values that are each placed on both a respective first bit index in the first subset based on the first sort order and a respective second bit index in the second subset based on the second sort order. Figs. 23-26 (and others) illustrate examples of multiple bit values that are each placed on a respective first bit index and a respective second bit index.In some embodiments, a number of the bit indices in the second subset is based on a reduced code rate. As described at least above in the context of Embodiment 4, and as indicated by the dashed arrows and label at the top of Fig. 26, the number of bit values that are placed on multiple bit indices between the u-code and the v-code may be reduced in Fig. 26 relative to Fig. 23. This applies not only to the sort orders shown in Figs. 23 and 26, but also to other embodiments.Capacity of a v-code may be impacted, for example, by rate matching that is performed to reduce the number of encoded bits that are to be transmitted. This is one example of a reason why it may be desirable to place fewer bit values on v-code bit indices. More generally, placing fewer information bits on bit indices in the second subset reduces a code rate of encoded bits corresponding to the second subset, and this may be expressed as the number of bit indices in the second subset on which input bit values are placed being based on a reduced code rate or a target code rate.A segmented approach may be applied to embodiments that involve a reduced code rate or target code rate, as shown by way of example in Fig. 27. The values of the input bits include multiple input bit values that are each placed on both respective first bit indices in the first subset (u-code in Fig. 27) based on the first sort order and unique segments of the bit indices in the first subset and respective second bit indices in the second subset (v-code in Fig. 27) based on the second sort order and unique segments of the bit indices in the second subset that respectively correspond to the unique segments of the bit indices in the first subset. The number of bit indices in each of the unique segments of the bit indices in the second subset (v-code in Fig. 27) may be based on respective reduced code rates of encoded bits that correspond to each segment. This example illustrates what may be referred to as partial code rate reduction, or reduced or target partial code rates, related to each segment.Embodiment 4 introduces per-segment code rate reduction ratios, but a common code rate reduction ratio may be applied to a v-code, lower set, or second subset in conjunction with a segmented approach, as in Embodiment 5 and Embodiment 6 above, for example. In Embodiment 5 and Embodiment 6, a code rate reduction ratio is applied, and the number of bit indices in the second subset is based on a reduced code rate, even though multiple segments are involved as shown by way of example in Fig. 28 for Embodiment 5 and Fig. 33 for Embodiment 6. Additional examples of sort orders, including per-segment sort orders (also referred to herein as third and fourth sort orders) , that are different from sorter orders applied to bit indices in bit index sets or subsets such as u-code and v-code bit indices (also referred to herein as first and second sort orders) are also provided elsewhere herein in the context of Embodiment 5 and Embodiment 6.Code rate reduction, whether on a per-segment (partial code rates) or bit index set or subset basis, may be provided, enabled, or supported in any of various ways. For example, a code rate for a v-code, lower set, or second subset may first be set or determined, and then reduced by placing bit values on fewer bit indices. A reduced code rate may instead be determined and implemented by selection of bit indices for frozen bits and information bits according to the reduced code rate. Per-segment reduced partial code rates may similarly be provided, enabled, or supported in any of various ways, including these examples.Embodiments 3 to 6 provide examples of segment-based embodiments, in which the values of the input bits include multiple input bit values that are each placed on both respective first bit indices in the first subset further based on unique segments of the bit indices in the first subset and a third sort order of the bit indices within each of the unique segments, and respective second bit indices in the second subset further based on unique segments of the bit indices in the second subset that respectively correspond to the unique segments of the bit indices in the first subset and a fourth sort order of the bit indices within each of the corresponding unique segments. In accordance with features disclosed by way of example herein with reference to Embodiment 9, the third sort order for each of the segments of the bit indices in the first subset and the fourth sort order for each respective corresponding unique segment of the bit indices in the second subset may be based on a code rate. As an example, for each segment, if the partial code rate related to encoded bits corresponding to the bit indices in a segment of the bit indices in the second subset is less than or equal to a threshold code rate, then the third sort order may be an ascending order of bit index rank (such as reliability order) and the fourth sort order is also an ascending order of bit index rank (such as reliability order) . Otherwise, if the partial code rate related to encoded bits corresponding to the bit indices in a segment of the bit indices in the second subset is greater than the threshold then the third sort order may be an ascending bit index order and the fourth sort order may be a descending bit index order.Construction of codes may be based at least in part on decoding-dependent rank metrics such as reliability metrics that are derived for specific decoding orders. Bit indices for encoding may be selected as information bit indices for placement of input bit values or frozen bit indices for placement of a predetermined bit value, for example, based on rank. According to embodiments disclosed herein, placement of bit values on bit indices are also based on sort orders, and accordingly sort orders may also be dependent upon a decoding order in which values of input bits are to be decoded from encoded bits.In the case of bit values that are placed on multiple bit indices, once a bit value for that bit index is decoded, the bit value is also known for the other bit indices, and in this sense the other bit indices may be considered a form of check-type bits or PC bits. With non-sequential decoding, the definition of PC bits and information bits may thus depend on decoding order. Bit indices on which the same bit value is placed may both be considered information bit indices in the information set, within the u-code and v-code information sets for example, but depending on decoding order one of those bit indices (or more than one if a bit value is placed on more than two bit indices) may be treated or otherwise considered to be a check-type bit index or PC bit index.More generally, any of the sort orders disclosed herein, such as any one or more of the first sort order, the second sort order, the third sort order, and the fourth sort order referenced above may be dependent upon a decoding order in which values of input bits are to be decoded from encoded bits.Some embodiments may involve rate matching, by puncturing or shortening for example, and as a result some bit indices may have zero or very low reliability or capacity. As described at least above, null bits may be defined, in addition to frozen bits and information bits, to bits with such low capacity that it is not to be decoded, and similarly null bit indices may be defined as bit indices for placement of input bit values.Null bit indices may be related to reducing the number of encoded bits that are generated by the encoding at 4006. In general if there are P punctured positions from which encoded bits are punctured, for example, then there will be exactly P null bit indices. Puncturing the first P bit positions at the first P indices in a codeword of a polar code, for example, will most significantly degrade the first P bit indices in an input vector, and those first P bit indices may be marked or otherwise indicated as or treated as null bit indices. Similarly, for many other puncturing patterns, a null bit pattern is identical to the puncturing pattern, such that null bit indices are the same indices as puncture bit indices from which encoded bits are punctured. There can be exceptions, especially when puncturing from the end of a codeword, in which case the null bit pattern is different from the puncturing pattern, and for such scenarios a null bit pattern or its relationship to a puncturing pattern may be defined or specified in a communication standard for example.In general terms, there is a relationship between bit indices of encoded bits that are punctured or otherwise reduced, in rate matching for example, and null bit indices in an input vector that are most significantly impacted or affected by reducing the number of encoded bits. Correspondence between a number of punctured bits and a number of null bit positions and correspondence between punctured and null bit indices are examples of relatively simple deterministic relationships.Null bit indices may be determined, by a decoder or at a receiver or decoding device, based on a puncturing pattern that is known, for example. Signaling or configuration may also or instead be used to indicate null bit indices in other embodiments.Encoding and decoding embodiments may be impacted by null bits. For example, if a null bit index is also part of an information set, then an input bit value that has been placed on that bit index may also be placed on another bit index that becomes part of the information set, so that the input bit value can be properly decoded. The input bit value may remain on the null bit index, and that input value may be encoded, but the corresponding encoded bit will not be transmitted or otherwise provided to a decoder and the input bit value will not be decoded at that null bit index.This is different from conventional decoding of rate-matched codes. Although both types of decoding (conventional and null bit embodiments) may involve setting soft information such as LLRs for punctured bits to 0 for example, null bit indices are skipped entirely for decoding. In contrast, conventional decoding does not skip any bit positions for decoding but rather still attempts to decode bit values at indices that correspond to punctured bits.In embodiments in which input bit values are placed on null bit indices, those input bit values are preferably also placed on one or more other bit indices, so that they can be decoded.Bit indices or positions (subchannels) for bit values before encoding may be assigned and thereby associated with labels, which is one possible way to place bit values on bit indices. These bit indices include at least information bit indices for values of input bits that are to be encoded (also referred to herein as information bits) , and may also include frozen bit indices for frozen bits that are set to a predetermined known bit value, and / or null bit indices for null bits. For information bits and frozen bits, the frozen bit positions may be labeled as “0” or another value that is not used for information bits, and the information bit positions (K in number) may labeled as l∈ {1, 2 …K} . More generally, information bit indices are for placing input bit values, frozen bit indices are for placing a predetermined value, and null bit indices, if provided, are also for placing input bit values and reducing a number of encoded bits. Code construction and encoding may be performed according to the bit value placement.For multiple bit indices to which the same label is assigned or on which the same bit value is placed, once the bit value at any one of these bit indices is decoded, the remaining bits at indices with the same bit value or label are immediately known, because of the relationship or check-type function that is created by the common, shared bit value or label. Decoding of an input bit for a first bit index among bit indices that have the same bit value or label may be according to a polar code, whereas decoding for other bit indices associated with the same bit value or label may reduce to setting the bit values to the same value as the first decoded input bit, based on the label or the same bit value having been placed on those other bit indices. In this sense, the first decoded bit is processed as an information bit in terms of encoding and decoding. The other information bits at bit indices associated with the same bit value or label need not undergo the same decoding that would normally be applied to information bits, and in this sense may be considered a form of check bit.In some embodiments herein, puncturing is applied to encoded bits that correspond to bit indices in the second subset referenced above, which may also be referred to as a lower set, or v-code bit indices as an example. The second subset of bit indices may thus include null bit indices, for values of input bits and reducing a number of encoded bits.At 4050, Fig. 40 illustrates various decoding and / or receiving counterparts of features shown at 4000. From a receiving device perspective, the receiving at 4052 represents receiving encoded bits that have been encoded by a polar code. The receiving at 4052 may involve receiving the encoded bits from a first communication device by a second communication device in a wireless communication network, for example. Encoded bits may be received through or via any of various types of interface, and embodiments are not in any way restricted to any particular type of interface.The polar code, as in other embodiments herein, includes a number of bit indices for placing bit values before encoding, and the bit indices include a first set of bit indices for placing values of the input bits and a second set of bit indices for placing a predetermined bit value. The first set of bit indices includes a first subset of bit indices and a second subset of bit indices, and the values of the input bits include an input bit value that is placed on both a first bit index in the first subset and a second bit index in the second subset. The first bit index is based on a first sort order of the first subset of bit indices, and the second bit index is based on a second sort order of the second subset of bit indices.The decoding at 4054 is intended to illustrate decoding the received reduced number of encoded bits to obtain decoded input bits. Decoding at 4054 may be implemented or performed by a decoder or a processor, for example.In some embodiments, a decoder might not be a discrete device, but rather a block of logic in silicon or part of a system-on-chip that decodes and uses the decoded input bits. In other embodiments, the decoded input bits are output as shown at 4056, for processing and / or storage, for example.Any or all of the features that are described herein in the context of encoder-side or transmitter-side methods, with reference to operations at 4000 in Fig. 40, for example, may also apply to or have counterpart features in a decoder-side or receiver-side method. Any one or more of the following features, for example, may be provided or supported, individually or in any of various combinations, in a decoder-side or receiver-side method:the receiving at 4052 may involve receiving a first subset of the encoded bits corresponding to the first subset of bit indices, and a method may also involve receiving a second subset of the encoded bits corresponding to the second subset of bit indices in an incremental transmission (or receiving one or more of such encoded bits corresponding to the second subset of bit indices in each of multiple incremental transmissions) from a first communication device by a second communication device;the first sort order is different from the second sort order, including any of the examples provided elsewhere herein;the number of bit indices is a number N, the first subset of bit indices is in an upper set of N / 2 bit indices that includes (N / 2+1) -th to N-th bit indices of the N bit indices, and the second subset of bit indices is in a lower set of N / 2 bit indices that includes first to (N / 2) -th bit indices of the N bit indices;the decoding at 4054 involves decoding the values of the input bits from the encoded bits according to a non-sequential decoding order that is based on capacity associated with the bit indices in the first set.Other features related to decoding may also or instead be provided or supported in some embodiments. Regarding non-sequential decoding order, for example, non-sequential decoding order enables decoding of the input bit value that is placed on both the first bit index and the second bit index based on decoding for the first bit index before decoding for the second bit index. For non-sequential decoding order, the first bit index is higher than the second bit index in an increasing order of bit indices. Non-sequential decoding may involve decoding for a v-code bit index before decoding for a u-code bit index, or more generally decoding bit indices out of order relative to a sequential order of those bit indices, as disclosed by way of example elsewhere herein.In the context of a v-code or lower set of bit indices and a u-code or upper set of bit indices, the general preference of decoding for v-code bits first if possible, as described elsewhere herein, illustrates a non-sequential decoding order that is based on capacity associated with the bit indices in the above-referenced first set of bit indices for placement of values of input bits.The capacity upon which a non-sequential decoding order is based may be or include a dynamic capacity that changes as the encoded bits are decoded. Various examples of decoding for bit indices and updating bit values for other bit indices are provided elsewhere herein. As bit values are updated from decoding for other bit indices, bit indices or blocks of bit indices, such as v-code segments for example, may become capacity-efficient, and in at least this sense the capacity upon which non-sequential decoding order is based may be a dynamic capacity.Decoding at 4054 according to a non-sequential decoding order may involve switching between decoding for bit indices in the above-referenced first subset and decoding for bit indices in the second subset. This is disclosed at least in the context of Embodiment 5 above, and by way example in the context of switching between decoding for u-code bit indices (an example of bit indices the first subset) and decoding for bit indices in unique segments of the bit indices in the v-code (an example of bit indices in the second subset) based on respective capacities associated with the bit indices in the unique segments.One example provided above for Embodiment 5 involves decoding the u-code until a vi-code rate decreases (as more bits are decoded) to a threshold code rate and then switching to decoding a vi-code, after which decoding of the u-code continues until a vj-code rate decreases (as more bits are decoded) to another threshold code rate, when decoding may then switch to decoding the vj-code, after which decoding of the u-code may continue to complete decoding of the u-code. Other examples of non-sequential decoding that involves switching between decoding for bit indices in different sets and subsets are also provided at least in the context of Embodiment 5.In some embodiments, decoding may involve obtaining a decoding starting bit index for sequential decoding, and switching from sequential decoding to non-sequential decoding for one or more bit indices in the second subset that are below the starting bit index, based on a switching condition. Embodiment 7 above provides an example of finding or determining a decoding starting point such that the sequential decoding performance is the best, and determining whether to decode a part of a v-code that is before the starting point (or a subblock in the v-code) , based BLER as an example of a criterion or condition for opportunistically determining whether to switch decoding. As noted above, other decoding performance criteria or conditions may also or instead be used. Examples of other decoding switching criteria, either or both of which may also or instead be used in determining whether to switch between sequential and non-sequential decoding, include a code rate condition related to code rate a subblock or part of a code before a starting point (for example to switch to decoding that subblock or part of a code or if the code rate is below a threshold) , or a capacity condition related to code rate a subblock or part of a code before a starting point (for example to switch to decoding that subblock or part of a code or if the capacity is above a threshold) .After a switch from sequential decoding to non-sequential decoding for one or more bit indices, decoding may involve resuming the sequential decoding. Switching from sequential to non-sequential decoding and resuming sequential decoding after the switching may involve switching and resuming multiple times, for non-sequential decoding of multiple subblocks of a v-code. As described above at least in the context of Embodiment 7, this type of decoding process may be iterative, in that if the u-code is not completely decoded, then decoding may proceed as outlined above, for different u-code and v-code subblocks.Some embodiments may involve sequential decoding, switching, and resuming based on an optimal path determination to obtain an optimal order of decoding for bit indices of a polar code. Various searching options for determining an optimal path and thus an optimal decoding order are provided at least above, in the context of Embodiment 7 and Embodiment 8.The disclosed examples include, among others, progressive searching examples. In conjunction with one form of progressive searching, decoding may involve switching between decoding for bit indices in the above-referenced first subset and decoding for bit indices in the second subset at one or more switching bit indices obtained based on a sequence of the input bit values and the predetermined bit value on the bit indices in the lower set, with the bit indices in the second subset in an order corresponding to an output order of the encoded bits. This is disclosed by way of example above in the context of Embodiment 8, as follows: if a next code bit corresponds to an information bit in the current v-code or v-code subblock, then u2v may be optimal because an additional transmitted code bit increases the code rate of the current v-code or v-code subblock; otherwise, if the next code bit corresponds to a frozen bit in the current v-code or v-code subblock, then decoding may opportunistically try v2u, to determine whether v2u leads to better performance, and greedily push the switching point toward u-code.In some embodiments, optimal path and optimal decoding order searching may be further limited to predetermined scheduling options, several examples of which are provided at least above in the context of Embodiment 8. Thus, decoding may involve selecting, from a plurality of predetermined decoding orders, a decoding order for decoding the encoded bits at 4052.It should be noted, however, that determining a decoding order or decoding scheduling need not necessarily involve path searching, or any type of searching. For example, optimal decoding order or decoding scheduling may be determined offline, and stored in memory or otherwise recorded or available for selection or use by a decoder or at a receiving device. Offline determination of decoding scheduling is one example of how decoding scheduling may be predetermined. Other options are also possible.Embodiment 10 and Fig. 39 illustrate, by way of example, how decoding may be according to one of a plurality of decoding orders for respective different code lengths. The decoding orders may include one or more decoding orders obtained by modifying a decoding order for a shorter code length. In the example shown in Fig. 39, modifying a decoding order for a shorter code length is based on whether a next encoded bit for a next longer code length corresponds to a bit index in the first subset (the information set in the example shown) or a bit index in the second subset (the frozen set in the example shown) .Embodiments may involve other features or operations as well. For example, some embodiments may involve communicating signaling that is indicative of any of various parameters, such as any one or more of: code length, puncturing pattern, base sequence for determining an information set and a frozen set, etc. Communicating of signaling may involve transmitting the signaling by an encoder  / encoding device or a transmitter  / transmitting device that is to transmit encoded bits, to a decoder  / decoding device or a receiver  / receiving device. The communicating may also or instead involve receiving the signaling by a decoder  / decoding device or a receiver  / receiving device from an encoder  / encoding device or a transmitter  / transmitting device. Signaling need not necessarily be between, or only between, communication devices by which encoded bits are to be transmitted or received. For example, a network device such as a gNB or a base station may transmit signaling to configure parameters at one or more communication devices. Therefore, a method may involve a network device transmitting signaling, and an encoder  / encoding device or a transmitter  / transmitting device receiving the signaling from the network device, and / or a decoder  / decoding device or a receiver  / receiving device receiving the signaling from the network device.The present disclosure encompasses various embodiments, including not only method embodiments, but also other embodiments such as apparatus embodiments and embodiments related to non-transitory computer readable storage media. Embodiments may incorporate, individually or in combinations, the features disclosed herein.An apparatus may include a processor that is configured, by executing programming for example, to cause the apparatus to perform a method or operations, or to provide or support features, disclosed herein. An apparatus may also include a non-transitory computer readable storage medium, coupled to the processor, storing programming for execution by the processor. In Fig. 3, for example, the processors 210, 260, 276 may each be or include one or more processors, and each memory 208, 258, 278 is an example of a non-transitory computer readable storage medium, in an ED 110 and a TRP 170, 172. A non-transitory computer readable storage medium need not necessarily be provided only in combination with a processor, and may be provided separately in a computer program product, for example.As an illustrative example, programming stored in or on a non-transitory computer readable storage medium may include instructions to or to cause a processor to, or a processor, device, or other component may otherwise be configured to, encode a number of input bits by a polar code to obtain encoded bits, with the polar code comprising a number of bit indices for placing bit values before encoding. The bit indices include: a first set of bit indices for placing values of the input bits and a second set of bit indices for placing a predetermined bit value. The first set of bit indices include a first subset of bit indices and a second subset of bit indices, and the values of the input bits include an input bit value placed on both a first bit index in the first subset and a second bit index in the second subset. The first bit index based on a first sort order of the first subset of bit indices, and the second bit index based on a second sort order of the second subset of bit indices.Programming may also include instructions to or to cause a processor to, or a processor, device, or other component may otherwise be configured to, output a first subset of the encoded bits corresponding to the first subset of bit indices.Apparatus embodiments are not limited to the foregoing examples, or to processor-based or programming-based embodiments. An apparatus may also or instead include, for example, an encoder for encoding the input bits by the polar code, and an interface coupled to the encoder for outputting the first subset of the encoded bits corresponding to the first subset of bit indices. Encoded bits may be output via any of various types of interface, including a communication interface in the case of transmitting the encoded bits. Embodiments are not in any way restricted to any particular type of interface, the implementation of which may be based at least in part on how encoded bits are to be output.Fig. 41 is a block diagram illustrating an apparatus in which embodiments may be implemented or supported. The example apparatus 4100 includes an encoding bit index selector 4102, a polar encoder 4104 and a rate matching module 4106 coupled to the polar encoder. Input bits for encoding are shown as input TB or payload bits, and rate-matched encoded bits are shown as an output of the rate matching module 4106. An interface for transmitting or otherwise outputting the reduced number of encoded bits may be provided by, incorporated into, or coupled to, any one or more of the polar encoder 4104 and the rate matching module 4106.Encode-side or transmit-side features or functions, and other features or functions herein, may be implemented in any of various ways, such as in hardware, firmware, or one or more components that execute software. The present disclosure is not limited to any specific type of implementation, and implementation details may vary between different devices, for example.The rate matching module 4106 is shown in dashed lines as an example of an optional component or device that may provide or support puncturing as disclosed herein, to reduce the number of encoded bits that are output, for transmission for example. Encoded bit reduction may be provided or supported in a different manner than shown, such as by the polar encoder 4104.Similarly, the encoded bit index selector 4102 is shown separately in Fig. 41, but bit index selection may be provided or supported in other ways, such as by the polar encoder 4104.In an embodiment, an apparatus includes the polar encoder 4104 for encoding input bits by a polar code to obtain encoded bits. The polar code comprises a number of bit indices for placing bit values before encoding, and the bit indices include a first set of bit indices for placing values of the input bits and a second set of bit indices for placing a predetermined bit value. The encoding bit index selector 4102 may be provided in some embodiments for selecting the bit indices in the first set and the second set, or the polar encoder 4104 may be configured for selecting the bit indices.The first set of bit indices includes a first subset of bit indices and a second subset of bit indices, the values of the input bits include an input bit value placed on both a first bit index in the first subset and a second bit index in the second subset, the first bit index is based on a first sort order of the first subset of bit indices, and the second bit index is based on a second sort order of the second subset of bit indices.More generally, an apparatus or a component thereof such as an encoder 4102 or a processor may be configured to encode (or for encoding) input bits, or programming may include instructions to encode (or for encoding) input bits or to cause a processor to encode input bits, to obtain encoded bits. An apparatus or a component thereof such as an interface coupled to the encoder may be configured to output (or for outputting) , or programming may include instructions to output (or for outputting) or to cause a processor to output, encoded bits, such as a first subset of the encoded bits corresponding to the first subset of bit indices. Outputting may involve transmitting the first subset of the encoded bits by a first communication device to a second communication device in a wireless communication network for example.Embodiments related to such apparatus or non-transitory computer readable storage media may include any one or more of the following features, for example, which are also discussed elsewhere herein:the apparatus or a component thereof such as an interface may be configured to transmit (or for transmitting) , or programming may include instructions to transmit (or for transmitting) or to cause a processor to transmit: in an incremental transmission from the first communication device to the second communication device, a second subset of the encoded bits corresponding to the second subset of bit indices;the first sort order is different from the second sort order;the number of bit indices is a number N, the first subset of bit indices is in an upper set of N / 2 bit indices that includes (N / 2+1) -th to N-th bit indices of the N bit indices, and the second subset of bit indices is in a lower set of N / 2 bit indices that includes first to (N / 2) -th bit indices of the N bit indices;the first sort order is an ascending order of rank associated with the upper set of N / 2 bit indices;the first sort order is an ascending index order associated with the upper set of N / 2 bit indices;the upper set of N / 2 bit indices includes S unique segments of bit indices and the lower set of N / 2 bit indices includes a corresponding S unique segments of bit indices, and the first bit index is in one of the S unique segments of bit indices, and the second bit index is in a respective one of the corresponding S unique segments of bit indices;the first bit index is further based on a third sort order of the bit indices within each of the S unique segments, and the second bit index is further based on a fourth sort order of the bit indices within each of the corresponding S unique segments;the third sort order is an ascending index order associated with the bit indices within each of the S unique segments;the fourth sort order is an ascending order of rank associated with the bit indices within each of the corresponding S unique segments;the fourth sort order is a descending index order associated with the bit indices within each of the corresponding S unique segments;the values of the input bits include a plurality of input bit values that are each placed on both a respective first bit index in the first subset based on the first sort order and a respective second bit index in the second subset based on the second sort order, and a number of the bit indices in the second subset is based on a reduced code rate;the values of the input bits include a plurality of input bit values that are each placed on both respective first bit indices in the first subset based on the first sort order and unique segments of the bit indices in the first subset and respective second bit indices in the second subset based on the second sort order and unique segments of the bit indices in the second subset that respectively correspond to the unique segments of the bit indices in the first subset, and a number of the bit indices in each of the unique segments of the bit indices in the second subset is based on respective reduced code rates;the values of the input bits include a plurality of input bit values that are each placed on both respective first bit indices in the first subset based on the first sort order and unique segments of the bit indices in the first subset and respective second bit indices in the second subset based on the second sort order and unique segments of the bit indices in the second subset that respectively correspond to the unique segments of the bit indices in the first subset, and a number of bit indices in the second subset is based on a reduced code rate;the values of the input bits include a plurality of input bit values that are each placed on both respective first bit indices in the first subset further based on unique segments of the bit indices in the first subset and a third sort order of the bit indices within each of the unique segments, and respective second bit indices in the second subset further based on unique segments of the bit indices in the second subset that respectively correspond to the unique segments of the bit indices in the first subset and a fourth sort order of the bit indices within each of the corresponding unique segments, and the third sort order for each of the segments of the bit indices in the first subset and the fourth sort order for each respective corresponding unique segment of the bit indices in the second subset are based on a code rate;the first sort order and the second sort order are dependent upon a decoding order in which the values of the input bits are to be decoded from the encoded bits;the second subset of bit indices includes bit indices, for the values of the input bits and reducing a number of the encoded bits, by the rate matching module 4106, for example.For a decoder-side or receiver-side apparatus or a computer program product comprising a non-transitory computer readable storage medium to support decoder-side or receiver-side operations, the apparatus or a component thereof such as an interface may be configured to receive (or for receiving) , or programming may include instructions to receive (or for receiving) or to cause a processor to receive, encoded bits that have been encoded by a polar code. Such an apparatus or a component thereof such as a decoder may be configured to decode (or for decoding) , or programming may include instructions to decode (or for decoding) or to cause a processor to decode, the encoded bits to obtain decoded input bits. As in other embodiments, the polar code comprises bit indices for placing bit values before encoding, and the bit indices comprise: a first set of bit indices for values of input bits and a second set of bit indices for a predetermined bit value. The first set of bit indices includes a first subset of bit indices and a second subset of bit indices, the values of the input bits include an input bit value placed on both a first bit index in the first subset and a second bit index in the second subset, the first bit index is based on a first sort order of the first subset of bit indices, and the second bit index is based on a second sort order of the second subset of bit indices.Embodiments related to such apparatus or non-transitory computer readable storage media may include any one or more of the following features, for example, which are also discussed elsewhere herein:the apparatus or a component thereof such as an interface may be configured to receive (or for receiving) , or programming may include instructions to receive (or for receiving) or to cause a processor to receive, from a first communication device by a second communication device in a wireless communication network, a first subset of the encoded bits corresponding to the first subset of bit indices;the apparatus or a component thereof such as an interface may be configured to receive (or for receiving) , or programming may include instructions to receive (or for receiving) or to cause a processor to receive, in an incremental transmission from a first communication device by a second communication device, a second subset of the encoded bits corresponding to the second subset of bit indices;the first sort order is different from the second sort order;the number of bit indices is a number N, the first subset of bit indices is in an upper set of N / 2 bit indices that includes (N / 2+1) -th to N-th bit indices of the N bit indices, and the second subset of bit indices is in a lower set of N / 2 bit indices that includes first to (N / 2) -th bit indices of the N bit indices;the apparatus or a component thereof such as a decoder may be configured to decode (or for decoding) , or programming may include instructions to decode (or for decoding) or to cause a processor to decode the encoded bits by decoding the values of the input bits from the encoded bits according to a non-sequential decoding order that is based on capacity associated with the bit indices in the first set;the non-sequential decoding order enables decoding of the input bit value that is placed on both the first bit index and the second bit index based on decoding for the first bit index before decoding for the second bit index;the capacity upon which the non-sequential decoding order is based is or includes a dynamic capacity that changes as the encoded bits are decoded;the apparatus or a component thereof such as a decoder may be configured to decode (or for decoding) , or programming may include instructions to decode (or for decoding) or to cause a processor to decode according to the non-sequential decoding order by switching between decoding for bit indices in the first subset and decoding for bit indices in unique segments of the bit indices in the second subset based on respective capacities associated with the bit indices in the unique segments;the apparatus or a component thereof such as a decoder may be configured to decode (or for decoding) , or programming may include instructions to decode (or for decoding) or to cause a processor to decode the encoded bits by: obtaining a decoding starting bit index for sequential decoding, and switching from the sequential decoding to non-sequential decoding for one or more bit indices in the second subset that are below the starting bit index, based on a switching condition;the apparatus or a component thereof such as a decoder may be further configured to decode (or for decoding) , or programming may further include instructions to decode (or for decoding) or to cause a processor to decode the encoded bits by resuming the sequential decoding after the non-sequential decoding for the one or more bit indices;the sequential decoding, the switching, and the resuming are based on an optimal path determination to obtain an optimal order of decoding for the bit indices of the polar code;the apparatus or a component thereof such as a decoder may be configured to decode (or for decoding) , or programming may include instructions to decode (or for decoding) or to cause a processor to decode the encoded bits by switching between decoding for bit indices in the first subset and decoding for bit indices in the second subset at one or more switching bit indices that are obtained based on a sequence of the input bit values and the predetermined bit value on the bit indices in the lower set, with the bit indices in the second subset in an order corresponding to an output order of the encoded bits;the apparatus or a component thereof such as a decoder may be configured to decode (or for decoding) , or programming may include instructions to decode (or for decoding) or to cause a processor to decode the encoded bits by selecting, from a plurality of predetermined decoding orders, a decoding order for decoding the encoded bits;the apparatus or a component thereof such as a decoder may be configured to decode (or for decoding) , or programming may include instructions to decode (or for decoding) or to cause a processor to decode the encoded bits according to one of a plurality of decoding orders for respective different code lengths, the decoding orders comprising a decoding order obtained by modifying a decoding order for a shorter code length based on whether a next encoded bit for a next longer code length corresponds to a bit index in the first subset or a bit index in the second subset.Apparatus embodiments are not in any way restricted to single devices. A system, for example, may include a first communication device and a second communication device. The first communication device may be configured to transmit (or for transmitting) a first subset of encoded bits encoded by a polar code, and a second communication device configured to receive (or for receiving) the first subset of the encoded bits from the first communication device, and to decode (or for decoding) the encoded bits to obtain decoded input bits. The polar code comprises a number of bit indices for placing bit values before encoding, the bit indices comprising: a first set of bit indices for placing values of the input bits and a second set of bit indices for placing a predetermined bit value. The first set of bit indices comprises a first subset of bit indices corresponding to the first subset of the encoded bits and a second subset of bit indices, the values of the input bits comprise an input bit value placed on both a first bit index in the first subset and a second bit index in the second subset, the first bit index is based on a first sort order of the first subset of bit indices, and the second bit index is based on a second sort order of the second subset of bit indices.The first communication device in a system may also or instead implement, provide, or support other encode-side or transmit-side features disclosed herein, and similarly the second communication device in a system may also or instead implement, provide, or support other decode-side or receive-side features disclosed herein.More generally, other features disclosed herein may also or instead be provided in method, apparatus, and / or system embodiments.Embodiments disclosed herein encompass various aspects of polar coding, including encoding and decoding.Disclosed embodiments may provide a fundamental upgrade of polar codes, and may make polar codes applicable for a much wider set of scenarios.For example, disclosed embodiments may be implemented as part of a channel coding scheme, and may thus be applicable wherever channel coding is used. This covers a very wide range of scenarios. The flexibility provided by embodiments disclosed herein may help make the associated channel coding scheme particularly suitable for wireless communications.Possible product deployments, in or in conjunction with which embodiments may be implemented, include network devices such as base stations, access devices such as UEs, robots, sensors, cars, drones, and satellites. Service deployment examples include enhanced mobile broadband (eMBB) , ultra-reliable low latency communications (URLLC) , massive machine type communications (mMTC)  / Internet of things (IoT) , and vehicular and industry scenarios. Network deployment examples include 5G+, 6G, WiFi, non-terrestrial networks (NTNs) , optical networks, distributed networks, and self-organized networks. These are illustrative and non-limiting examples, and other deployments, implementations, or applications are possible.Two components that are considered in detail herein include specific code construction approaches and scheduled decoding. Fig. 42 is a block diagram illustrating code construction and decoding scheduling consistent with the present disclosure, compared with a conventional approach to code construction. Code construction as disclosed herein involves placing bit values on more than one bit index (optionally using bit labeling) , and potentially partial code rate reduction by placing fewer of such bits on multiple bit indices. Scheduled decoding may be SC-based in some embodiments, but is flexible rather than fixed sequential decoding according to the conventional approach as shown in Fig. 42. The two components of code construction and scheduled decoding may be combined in manners disclosed herein, and may together create or provide more degrees of freedom for higher polar coding gain.Determining optimal decoding scheduling may involve searching for example. Options for representation of decoding scheduling by scheduling sequences are also provided.Decoding as disclosed herein may be beneficial in helping avoid catastrophic performance degradation that may otherwise affect conventional approaches that use or support only sequential decoding.More generally, embodiments may be advantageous in helping to achieve true ratelessness for polar codes. Consistent with aspects of the present disclosure, a length Nmax code may be constructed only once and used for all code lengths up to length Nmax, by extracting an (M, K) polar code for arbitrary K ≤ M ≤ Nmax from the length Nmax code. The coding gain of an independently constructed (M, K) polar code can be provided without having to independently construct the (M, K) polar code.As an example, rateless polar codes consistent with the present disclosure may have stable coding gain over repetition polar codes, which simply repeat an (N / 2, K) polar code to achieve a longer (M, K) polar code. Rateless polar codes consistent with the present disclosure are also expected to have similar performance to 5G NR polar codes and Gaussian-approximation-constructed polar codes.Fig. 43 includes plots illustrating error correction performance. The plot for a rateless polar code consistent with the present disclosure is labelled "CDPrf-SS" , and has stable coding gain over repetition polar codes ( "CC" in the legend) , which simply repeat an (N / 2, K) polar code to achieve a longer (M, K) polar code. The example rateless polar code also has similar performance to 5G NR polar codes ( "NR" in the legend) and Gaussian-approximation-constructed polar codes ( "QUP" in the legend) . The plots in Fig. 43 are for an example of K=768 and M=1024 to 2048 for a range of code lengths and code rates. Similar or different performance may be observed under similar or different conditions. While rateless polar codes consistent with the present disclosure can achieve similar performance to 5G NR polar codes and Gaussian-approximation-constructed polar codes, in comparison, those conventional polar codes suffer from inflexibility and lack of ratelessness.Although this disclosure refers to illustrative embodiments, this is not intended to be construed in a limiting sense. Various modifications and combinations of the illustrative embodiments, as well as other embodiments of the disclosure, will be apparent to persons skilled in the art upon reference to the description.Features disclosed herein in the context of any particular embodiments may also or instead be implemented in other embodiments. method embodiments, for example, may also or instead be implemented in apparatus, system, and / or computer program product embodiments. In addition, although embodiments are described primarily in the context of methods and apparatus, other implementations are also contemplated, as instructions stored on one or more non-transitory computer-readable media, for example. Such media could store programming or instructions to perform any of various methods consistent with the present disclosure.Although aspects of the present invention have been described with reference to specific features and embodiments thereof, various modifications and combinations can be made thereto without departing from the invention. The description and drawings are, accordingly, to be regarded simply as an illustration of some embodiments of the invention as defined by the appended claims, and are contemplated to cover any and all modifications, variations, combinations or equivalents that fall within the scope of the present invention. Therefore, although embodiments and potential advantages have been described in detail, various changes, substitutions and alterations can be made herein without departing from the invention as defined by the appended claims. Moreover, the scope of the present application is not intended to be limited to the particular embodiments of the process, machine, manufacture, composition of matter, means, methods and steps described in the specification. As one of ordinary skill in the art will readily appreciate from the disclosure of the present invention, processes, machines, manufacture, compositions of matter, means, methods, or steps, presently existing or later to be developed, that perform substantially the same function or achieve substantially the same result as the corresponding embodiments described herein may be utilized according to the present invention. Accordingly, the appended claims are intended to include within their scope such processes, machines, manufacture, compositions of matter, means, methods, or steps.Moreover, any module, component, or device exemplified herein that executes instructions may include or otherwise have access to a non-transitory computer readable or processor readable storage medium or media for storage of information, such as computer readable or processor readable instructions, data structures, program modules, and / or other data. A non-exhaustive list of examples of non-transitory computer readable or processor readable storage media includes magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, optical disks such as compact disc read-only memory (CD-ROM) , digital video discs or digital versatile disc (DVDs) , Blu-ray DiscTM, or other optical storage, volatile and non-volatile, removable and nonremovable media implemented in any method or technology, random-access memory (RAM) , read-only memory (ROM) , electrically erasable programmable read-only memory (EEPROM) , flash memory or other memory technology. Any such non-transitory computer readable or processor readable storage media may be part of a device or accessible or connectable thereto. Any application or module herein described may be implemented using instructions that are readable and executable by a computer or processor may be stored or otherwise held by such non-transitory computer readable or processor readable storage media.United States provisional patent application Serial No. 63 / 454, 067, entitled "Methods, Systems, and Apparatus for Rateless Polar Coding" , and filed on March 23, 2023, includes the following content as basis for the embodiments disclosed herein.Methods, Systems, and Apparatus for Rateless Polar CodingIn wireless communications, channel quality is constantly changing due to the fading effects at both fast and slow scale. Accordingly, channel coding have always been designed to adapt to the channel states. Modulation coding scheme (MCS) adaptation is a powerful method to combat varying channel states, in which the modulation order and code length and coding rate can be changed in real time. Therefore, it requires that a channel coding scheme can flexibly change the code length and code rate in a fine-grained way, and at the same time achieve good error correction performance in all possible configurations. This fine-grained flexibility of channel codes is one of the most challenging problem for engineers in this domain. Typically, probabilistic codes such as LDPC codes, which are more like random codes, are naturally better suited for this purpose. However, algebraic codes such as RM codes and BCH codes, are not as flexible as probabilistic codes. This is because their inherent coding structures may be compromised when code length or rate changes.Polar codes is one of a kind, as it exhibits features from both probabilistic codes and algebraic codes. As a results, it shows the level of flexibility in between. Currently, several rate matching schemes, including puncturing and shortening, are available to design rate-compatible polar codes, such as the 5G NR polar codes. However, the degree of flexibility is not enough to support more advanced features such as fine-grained incremental-redundancy hybrid automatic repeat request (IR-HARQ) .“Ratelessness” is the strictest requirement for rate compatibility, where the encoder does not need to determine the code rate R before transmission. Current polar code constructions need to know M before transmission, therefore does not quality as “rateless” . In all existing polar coding schemes, the code length M is required during code construction, because it significantly affects the reliability of polarized subchannels and the corresponding information subchannel selection.Polar codes are linear block codes. For a polar code of length N, its generator matrix is GN, and its encoding process is whereis the binary information vector, is the binary code vector. The N×N binary matrixwhereis the polarization kernel matrix, n=log2 N, andis Kronecker product.Typically, there are K information bits to be encoded into N code bits. Obviously, we have K<N to obtain a code rate R=K / N<1. That implies only part ofis used to carry information bits, and the rest are called frozen bits. Denote by I the information bit set (or information set) , and F the frozen bit set (or frozen set) , respectively. Sometimes, there is an additional PC bit set, denoted by P. The frozen bits are known (usually all zeros) before decoding, so they do not carry any information. The PC bits are parity-check bits of a subset of information bits, therefore are known once the associated information bits are decoded. The decoding of polar codes is actually trying to recover all information bits.The code length M may not always be the power of 2, i.e., M<N. In practice, puncturing and shortening are used to reduce transmitted code bits from N to M. For convenience, we call N the mother code length, and M the code length from now on. In particular, punctured bits are untransmitted bits unknown to the decoder, but shortened bits are untransmitted bits known to the decoder (usually all zeros) .An example of a polar code with N=8, K=4 is shown in the following trellis graph. Each “butterfly” in the graph is a polarization, i.e., In this example, the information set is I= {u4, u6, u7, u8} , and the frozen set is F={u1, u2, u3, u5} .Successive cancellation (SC) is the basic decoding algorithm for polar codes, where all the frozen bits and information bits are decoded sequentially, i.e., bit by bit. The preceding bits are always decoded first.Successive cancellation list (SCL) is an enhanced decoding algorithm for polar codes, where multiple (let’s say L) SC decoding instances are executed. Each instance is called a “decoding path” . When decoding each binary bit, both “0” and “1” branches are extended to each path, creating 2L paths. Then, all 2L paths are compared, where the most likely L paths are kept, and the least likely L paths are discarded (or pruned) . This path extension and pruning operations are performed during decoding every information bit, until all information bits are decoded. At last, the most likely path is selected as the decoding output.CRC-aided successive cancellation list (CA-SCL) works almost the same as SCL, except that in the last step, the most likely path that passes CRC check is selected as the decoding output.Parity-check successive cancellation list (PC-SCL) works almost the same as SCL, except that when decoding parity-check (PC) bits, the parity check value of its associated preceding bits is used as the bit decision result. PC bits are a new type of bits in addition to frozen bits and information bits.Rate-compatible polar coding is a key technology for wireless applications. In 5G NR, a combination of puncturing, shortening and repetition is used together with a fixed reliability sequence to balance performance and complexity. In particular, a subblock-wise interlacing and interleaving is used for both puncturing and shortening (M. -M. Zhao, G. Zhang, C.Xu, H. Zhang, R. Li and J. Wang, "An Adaptive IR-HARQ Scheme for Polar Codes by Polarizing Matrix Extension, " inIEEE Communications Letters, vol. 22, no. 7, pp. 1306-1309, July 2018, doi: 10.1109 / LCOMM. 2018.2825370 [1] ) . The puncturing and shortening patterns are symmetric.With mother code length N, and code length M, the specific rate matching scheme used is● Repetition, when M>N;● Puncturing, when K / M≤7 / 16;● Shortening, when K / M>7 / 16;A subblock-wise interleaving is performed before puncturing and shortening. The interleaver partitions the length-N mother code into 32 subblocks of size N / 32 and interlacing them using the following table [3rd Generation Partnership Project (3GPP) , “Multiplexing and channel coding, ” 3GPP 38.212 V. 15.3.0, 2018, Table 5.4.1.1-1] .Since puncturing is performed from the 1st code bit, and shortening is performed from the last code bit, the rate matching module is efficiently implemented through a cyclic butter. All mother code bits are placed in the cyclic butter, and puncturing is done by selecting the bits in clockwise order, and shortening is done by slecting bits in counter-clockwise order. The cyclic butter is illustrated below.An incremental freezing HARQ method proposed in B. Li, D. Tse, K. Chen and H. Shen, "Capacity-achieving rateless polar codes, " 2016 IEEE International Symposium on Information Theory (ISIT) , 2016, pp. 46-50, doi:10. 1109 / ISIT. 2016.7541258 [2] , where transmissions of multiple short code words are supported. As more short codes are transmitted, the overall code length increases, and the overall code rate decreases.1. In the first transmission, an (M1, K) polar code is constructed, encoded and transmitted. The code rate is R1=K / M1. Usually, the code rate is determined such that R1<C1, where C1 is the channel capacity of the first transmission. But in the case of faded channel or inaccurate channel estimation, we may have R1>C1, and decoding will fail and a second transmission is required.2. In the second transmission, K2 least reliable information bits are selected from the K information bits in the first transmission. In practice, K2 is chosen according to the estimated channel capacity of the second transmission. An (M2, K2) polar code is constructed accordingly and encoded and transmitted. However, if R2>C2, and decoding will fail again and a third transmission is required.3. The third and fourth transmissions are constructed similarly, and so on.At the receiver side, the decoder will always decode the last received code word, because it has the lowest code rate and thus the best chance of successful decoding. After the last transmission is correctly decoded, the corresponding information bits in all previous transmissions become known, and can be decoded as frozen bits with known values. This process is repeated as more code words are decoded, until all K bits in the first transmission is decoded. The term “incremental freezing” refers to the operations to additionally freeze some information bits in the previous transmissions once a later transmitted code word is decoded.An example is illustrated below, where M1=M2=M3=M4=16, and K1=12, K2=6, K3=4, K4=2.Parity-check (PC) polar codes were first proposed to improve minimum distance of polar codes (3rd Generation Partnership Project (3GPP) , “Multiplexing and channel coding, ” 3GPP 38.212 V. 15.3.0, 2018 [3] ) , and then proposed to support IR-HARQ (H. Zhang et al., "Parity-Check Polar Coding for 5G and beyond, " 2018 IEEE International Conference on Communications (ICC) , 2018, pp. 1-7, doi: 10.1109 / ICC. 2018.8422462 [4] ) . Here the PC bits are for coupling multiple retransmissions into a longer polar code with extra coding gain.The PC functions used for IR-HARQ are also a special case, where some information bits are copied from the initial transmitted code block to a retransmitted code block [4] . This one-to-one parity checking between the two shorter code blocks effectively coupled the two code blocks into a longer code block.For example, the initial transmission is a (M1=8, K=5) polar code, where {u0, u1, u2, u3, u4} is the information set, and {u5, u6, u7}is the frozen set. Its encoding process is below.In the first retransmission, four additional code bits are transmitted. These four bits are coupled with the initially transmitted 8 bits to form a (M2=12, K=5) polar code. The coupling is achieved by copying the value of u4 to u8 during encoding, thus generating a PC function u4 + u8 = 0 (or equivalently u8 = u4) . As said, the largest index in this PC function corresponds to the PC bit (here u8) . During decoding, u4 decoded as an information bit, while u8 is decoded as a PC bit using u8 = u4. With {u0, u1, u2, u3, u8} as the information set, {u4} as the PC set, and {u5, u6, u7, u9, u10, u11} as the frozen set, the encoding process is below.In the second retransmission, the remaining four bits c12, c13, c14, c15 are transmitted to form a (M3=16, K=5) polar code. But this time no new PC bits are generated.From the polar transform matrix point of view, the three transmissions with effective code lengths M1=8, M2=12, M3=16, are shown below [4] .The existing rate matching and PC-polar coding schemes can achieve some flexibility. However, none of them can provide the “rateless” feature:● The 5G polar rate matching scheme needs to know the code length M before code construction. First, it will determine whether to puncture or shorten the code according to M. Then, the information set I is selected according to the puncture / shorten patterns. This violates the definition is ratelessness. Moreover, [1] does not support multiple transmissions.● The incremental freezing IF-HARQ scheme [2] supports multiple transmissions, but both the code length Mi and information length Ki in each retransmission need to be known at the transmitter before constructing the retransmitted code words. Specifically, the values of Mi and Ki is determined by the channel estimation result of that transmission. Correspondingly, an (Mi, Ki) polar code must be constructed for each retransmission. Although the title of [2] suggests that the scheme is “rateless” , the schemes clearly violates the definition of ratelessness. The other drawback of [2] is inferior coding gain compared to that of a long code. For example, the performance of the first two code words (M, K) and (M2, K2) combined is still worse than the long code word (M + M2, K) .● The existing PC-polar scheme [3] for IR-HARQ [4] also supports multiple transmissions, but the code length Mi in each retransmission needs to be known at the transmitter before constructing the retransmitted code words. Specifically, the value of Mi determines the number of copied bits (or PC bits) in each retransmission. This also violates the definition of ratelessness. Moreover, the performance after two retransmissions is inferior to the long code word (M + M2, K) .5G NR adopts a rate-dependent rate matching scheme [1] . However, its flexibility is undermined by the shortening. If we need to construct a rateless polar code, where the code length (code rate) is flexible, the shortened bits under one code length M1 cannot be used for transmission under another code length M2. This is due to the fact that shortened bits are known to the receiver and do not carry any additional information about the source bits. On the other hand, punctured bits are unknown to the receiver, thus can carry additional information about the source bits. By transmitting more punctured bits, the overall code rate is effectively reduced, leading to higher decoding reliability. Therefore, instead of seeking rate compatibility with hybrid puncturing and shortening, we prefer to disable shortening but seek rate compatibility with novel parity checking methods. The main difference is that we hope to achieve rate compatibility through operations before polar transformation (giving us more flexibility on how to use the code bits) , rather than after polar transformation.To achieve true ratelessness, several requirements must be met. Although the term “rateless” is somewhat misused in literature, we explicitly define it here:● Construct a (Nmax, K) mother code word once for all at the beginning. It already contains all the (M, K) codes for all K ≤ M ≤ Nmax.● True ratelessness requires that the code words are nested. That is, an (M1, K) code word is always nested within an (M2, K) code word for any M1 < M2.● Any (M, K) code extracted from the (Nmax, K) mother code enjoys the coding gain of an individually constructed (M, K) code, which is optimized for length M only.● No need to reconstruct the codes (either according to code length Mi, or channel condition) before each subsequent transmission.Designing polar codes that meet all the above requirements is an extremely challenging research problem that has not been solved before.Embodiments of this invention may realize ratelessness through both a unified code construction for all code lengths and more flexible decoding algorithms.Embodiments of this invention integrate some ideas disclosed in three patent applications by the same applicant, filed of even date herewith, including● Methods, Systems, and Apparatus for Non-Sequential Decoding of Polar Codes● Methods, Systems, and Apparatus for Bit Value Placement in Polar Coding● Methods, Systems, and Apparatus for Partial Code Rate Reduction in Polar CodingCombining the solutions helps achieve true ratelessness for polar codes and provides specific schemes with implementation details.There are two main components of the invention:1. Specific code construction schemesa. Information bit labelingb. Partial rate reduction2. Scheduled SC-based decodinga. Searching for good schedulingb. Representation of scheduling sequenceThe design of the two components are actually coupled –they rely on each other. Together they create more degrees of freedom for higher polar coding gain.Code constructionIn this invention, we use puncturing to generate the transmitted code bits.The main features of code construction are:1. We adopt a sequential puncturing (or transmission) of a mother code of length N, where the first P code bits are punctured, and the last M code bits are transmitted. We have P+M=N.2. The transmitted code bits have indices [P+1 …N] , which are divided into two codes, a v-code and a u-code:a. The v-code consisting of the {P+1 …N / 2} -th bits, with length N / 2-P, may be a punctured polar code. In some cases, when N / 2-P is a power-of-2, the v-code can be a non-punctured polar code.b. The u-code consisting of the {N / 2+1 …N} -th bits, with length N / 2, is a non-punctured polar code.3. The information / PC bit (or non-frozen) positions are determined.a. Select the most reliable K bit positions {N / 2+1 …N} in according to a pre-defined reliability ordered sequence of length N / 2. Denote the bit position set by Iu. If K>N / 2, select all N / 2 bit positions as the information set Iu, and also select the additional K-N / 2 bits as “virtual” information bits in Iu, because they are actually not in the u-code. But to facilitate the labeling process, we still include them in Iu, and assign the additional K-N / 2 bits with reliability {- (K-N / 2) , - (K-N / 2-1) …-2, -1} , and bit index {- (K-N / 2) , - (K-N / 2-1) …-2, -1} , respectively.b. Select the most reliable K bit positions {1 …N} in according to a pre-defined reliability ordered sequence of length N. Denote the bit position set by Iuv.c. The information / PC bit positions set in {1 …N / 2} is denoted by Iv= {i: i∈Iuv and i≤ N / 2} .d. The information / PC bit (or non-frozen) position set is I = Iu∪Iuv = [Iv, Iu] .4. The N polarized subchannels are labeled by either 0 as frozen bit positions, or {1, 2 …K} as information / PC bits.a. The labeling determines the code construction.b. To achieve ratelessness, the labeling should not depend on the actually transmitted code length M, but may depend on the information length K.i. In such a way, the code construction and subsequent encoding can be done without knowing the actually transmitted code length M.ii. The specific labeling schemes are described in the embodiments.c. The encoding can be done once for all at the beginning to obtain a length-N mother code.i. Specifically, the K information bits are assigned to the information subchannels labeled by the K labels. Because multiple subchannels can be assigned by a same label, one information bit may be assigned to multiple subchannels associated to that label. This implicitly establishes several PC functions, where the first bit is checked by other bits with the same information bit value.d. The rate matching to obtain an arbitrary (M, K) codes for all K≤M≤N is simple. Just take the last M code bits of the mother code, and transmit.The code structure is illustrated in the figure below. The big square is the polar transformation matrix (or generator matrix) of the length-N mother polar code. The shaded square is the generator matrix of the transmitted part. The generator matrices of the v-code and u-code are also extracted for illustration.In this example, the most reliable K bit positions in {N / 2+1 …N} isIu = {17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32}and the most reliable K bit positions in {1 …N} isIu = {8, 12, 14, 15, 16, 20, 22, 23, 24, 26, 27, 28, 29, 30, 31, 32} .The information / PC bit positions set in {1 …N / 2} isIv = {8, 12, 14, 15, 16} .The information / PC bit (or non-frozen) position set isI = Iu∪Iuv = [Iv, Iu] = {8, 12, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32} .The labels for the 32 subchannels are l= [0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 4, 0, 3, 2, 1, 1, 2, 3, 6, 4, 7, 8, 12, 5, 9, 10, 13, 11, 14, 15, 16] . Here the least reliable bit indices in {N / 2+1. . . N} have labels {1, 2, 3, 4, 5} , and they are assigned to the most reliable 5 bit indices in {1... N / 2} as info bits.Before encoding, the 16 source bits [a1, a2 …a16] are assigned to the subchannels labeled by 1, 2 …16, respectively. In particular, the source bits [a1, a2, a3, a4, a5] are assigned to two subchannels. The frozen subchannels (labeled as 0) are assigned by values known to the decoder (e.g., 0) .The information vector after information / frozen bit assignment isu=[0, 0, 0, 0, 0, 0, 0, a5, 0, 0, 0, a4, 0, a3, a2, a1, a1, a2, a3, a6, a4, a7, a8, a12, a5, a9, a10, a13, a11, a14, a15, a16] .The encoding is performed by multiplying the information vector u by the polarization matrix G32 to get the coded vector x =u·G32.It is a rateless code with K=16 and arbitrary 16≤M≤32 because the labeling and encoding have nothing to do with M. The length-M transmitted code is [aP+1, aP+2 …a32] , where P=32-M.The v-code is [aP+1, aP+2 …a32] .The u-code is [a16, a17 …a32] .The code construction in the above example is illustrated below:Although the above main features and the example only describe the construction of a (K≤M≤N, K) rateless polar code, whereandis the ceiling operation. The method needs to be extended to arbitrary Nmax→∞ to fulfill the rateless code promise. The extension is straightforward: simply double the current code length N to 2N, and perform the (1) information / PC / frozen bit position selection and (2) bit labeling using the same rules. We can obtain very long codes by repeating this doubling process.Scheduled decodingIn this invention, we use a scheduling sequence to specify the decoding order for all K≤M≤N.The main features of scheduled decoding are:1. The scheduling sequence specifies the order of bit positions to be decoded.2. The scheduling sequence has length M, and is a permutation of indices [P+1 …N] .a. In the special cases where P=0 and P=N / 2, the sequences are in ascending order (sequential decoding) .b. In other cases, the sequences may not be in ascending order (non-sequential decoding) .3. The scheduling sequence is designed according to several rulesa. An information bit and its preceding consecutive frozen bits are bundled as an information bit cluster. For example, consecutive bit positions [i, i+1 …k-1, k] is an information bit cluster if and only if the k-th bit position is an information bit position, and all bit positions in [i, i+1 …k-1] are frozen bit positions. The information bit cluster with bit positions indexed by [i, i+1 …k-1, k] is denoted by {k} for simplicity.b. The bit positions in an information bit cluster are always decoded sequentially. In other words, the bit decoding order within an information bit cluster is ascending order, and does not need to be further specified. For description convenience, we say “decoding an information bit cluster {k} ” , which is equivalent to “decoding the bit indices [i, i+1 …k-1, k] sequentially” . Thanks to this description simplification, the decoding sequence can be reduced to preserve only the information bit positions.c. An information bit cluster is decoded only after the corresponding information bit position becomes sufficiently reliable. During the course of decoding, as more information bits are decoded, the remaining bit positions will become more reliable in general. This phenomenon can be observed for both sequential and non-sequential decoding. The former (sequential) case is well known. In the latter (non-sequential) case, the hard decision of an information bit position j with larger bit index can also enhance the reliability of an information bit position i with smaller bit index (i<j) , because the j-th information bit position is equivalently shortened.d. If a source bit is assigned to multiple bit positions with the same label, the decoding of one bit position will immediately reveal the value of the rest bit positions (they become PC bits) . Therefore, their corresponding bit cluster will be decoded right after. If there are information bit clusters {k1} , {k2} and {k3} , whose corresponding information bit positions k1, k2 and k3 (assume k1 < k2 < k3) have the same label, then if the cluster {k3} is decoded, then {k1} , {k2} will be decoded right after.In the previous example, the scheduling sequences for a rateless (16≤M≤32, K=16) code are● M=16: 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32 (Sequential SC-based decoding)● M=17: 17, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32● M=18: 17, 16, 18, 15, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32● M=19: 17, 16, 18, 15, 19, 14, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32● M=20: 17, 16, 18, 15, 13, 14, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32● M=21: 17, 16, 18, 15, 13, 14, 19, 20, 21, 12, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32● M=22: 17, 16, 18, 15, 11, 12, 13, 14, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32● M=23: 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32● M=24: 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32● M=25: 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 8, 26, 27, 28, 29, 30, 31, 32● M=26: 9, 10, 11, 12, 13, 14, 15, 16, 7, 8, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32● M=27: 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32● M=28: 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32● M=29: 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32● M=30: 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32● M=31: 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32● M=32: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32 (Sequential SC-based decoding)Using the simplified description where we only use the information bit index to represent its cluster, the simplifiedscheduling sequences are below. For example, in the M=32 sequence below, “8” actually represents {1, 2, 3, 4, 5, 6, 7, 8} in the sequences above. The preceding frozen bits {1, 2, 3, 4, 5, 6, 7} are omitted. Therefore, the sequences are shorter.● M=16: 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32 (Sequential SC-based decoding)● M=17: 17, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32● M=18: 17, 16, 18, 15, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32● M=19: 17, 16, 18, 15, 19, 14, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32● M=20: 17, 16, 18, 15, 14, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32● M=21: 17, 16, 18, 15, 14, 19, 20, 21, 12, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32● M=22: 17, 16, 18, 15, 12, 14, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32● M=23: 12, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32● M=24: 12, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32● M=25: 12, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 8, 26, 27, 28, 29, 30, 31, 32● M=26: 12, 14, 15, 16, 8, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32● M=27: 8, 12, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32● M=28: 8, 12, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32● M=29: 8, 12, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32● M=30: 8, 12, 14, 15, 16, 17, 18, 19, 20, 21, 22,...

Claims

1.A method comprising:encoding input bits by a polar code to obtain encoded bits, the polar code comprising a number of bit indices for placing bit values before encoding, the bit indices comprising: a first set of bit indices for placing values of the input bits and a second set of bit indices for placing a predetermined bit value, the first set of bit indices comprising a first subset of bit indices and a second subset of bit indices,the values of the input bits comprising an input bit value placed on both a first bit index in the first subset and a second bit index in the second subset, the first bit index based on a first sort order of the first subset of bit indices, and the second bit index based on a second sort order of the second subset of bit indices,the method further comprising:outputting a first subset of the encoded bits corresponding to the first subset of bit indices.2.The method of claim 1, further comprising transmitting, from a first communication device to a second communication device in a wireless communication network, the first subset of the encoded bits.3.The method of claim 2, further comprising transmitting, in an incremental transmission from the first communication device to the second communication device, a second subset of the encoded bits corresponding to the second subset of bit indices.4.The method of any one of claims 1 to 3, wherein the first sort order is different from the second sort order.5.The method of any one of claims 1 to 4, wherein the number of bit indices is a number N, the first subset of bit indices is in an upper set of N / 2 bit indices that includes (N / 2+1) -th to N-th bit indices of the N bit indices, and the second subset of bit indices is in a lower set of N / 2 bit indices that includes first to (N / 2) -th bit indices of the N bit indices.6.The method of claim 5, wherein the first sort order is an ascending order of rank associated with the upper set of N / 2 bit indices.7.The method of claim 5, wherein the first sort order is an ascending index order associated with the upper set of N / 2 bit indices.8.The method of any one of claim 5 to claim 7, wherein the second sort order is a descending index order associated with the lower set of N / 2 bit indices.9.The method of any one of claim 5 to claim 8,wherein the upper set of N / 2 bit indices comprises S unique segments of bit indices and the lower set of N / 2 bit indices comprises a corresponding S unique segments of bit indices, andwherein the first bit index is in one of the S unique segments of bit indices, and the second bit index is in a respective one of the corresponding S unique segments of bit indices.10.The method of claim 9, wherein the first bit index is further based on a third sort order of the bit indices within each of the S unique segments, and the second bit index is further based on a fourth sort order of the bit indices within each of the corresponding S unique segments.11.The method of claim 10, wherein the third sort order is an ascending index order associated with the bit indices within each of the S unique segments.12.The method of claim 10 or claim 11, wherein the fourth sort order is an ascending order of rank associated with the bit indices within each of the corresponding S unique segments.13.The method of claim 10 or claim 11, wherein the fourth sort order is a descending index order associated with the bit indices within each of the corresponding S unique segments.14.The method of any one of claims 1 to 8,wherein the values of the input bits comprise a plurality of input bit values that are each placed on both a respective first bit index in the first subset based on the first sort order and a respective second bit index in the second subset based on the second sort order,wherein a number of the bit indices in the second subset is based on a reduced code rate.15.The method of any one of claims 1 to 8,wherein the values of the input bits comprise a plurality of input bit values that are each placed on both respective first bit indices in the first subset based on the first sort order and unique segments of the bit indices in the first subset and respective second bit indices in the second subset based on the second sort order and unique segments of the bit indices in the second subset that respectively correspond to the unique segments of the bit indices in the first subset,wherein a number of the bit indices in each of the unique segments of the bit indices in the second subset is based on respective reduced code rates.16.The method of any one of claims 1 to 8,wherein the values of the input bits comprise a plurality of input bit values that are each placed on both respective first bit indices in the first subset based on the first sort order and unique segments of the bit indices in the first subset and respective second bit indices in the second subset based on the second sort order and unique segments of the bit indices in the second subset that respectively correspond to the unique segments of the bit indices in the first subset,wherein a number of bit indices in the second subset is based on a reduced code rate.17.The method of any one of claims 1 to 8,wherein the values of the input bits comprise a plurality of input bit values that are each placed on both respective first bit indices in the first subset further based on unique segments of the bit indices in the first subset and a third sort order of the bit indices within each of the unique segments, and respective second bit indices in the second subset further based on unique segments of the bit indices in the second subset that respectively correspond to the unique segments of the bit indices in the first subset and a fourth sort order of the bit indices within each of the corresponding unique segments,wherein the third sort order for each of the segments of the bit indices in the first subset and the fourth sort order for each respective corresponding unique segment of the bit indices in the second subset are based on a code rate.18.The method of any one of claims 1 to 17, wherein the first sort order and the second sort order are dependent upon a decoding order in which the values of the input bits are to be decoded from the encoded bits.19.The method of any one of claims 1 to 18, wherein the second subset of bit indices comprises bit indices, for the values of the input bits and reducing a number of the encoded bits.20.A method comprising:receiving encoded bits encoded by a polar code, the polar code comprising a number of bit indices for placing bit values before encoding, the bit indices comprising: a first set of bit indices for placing values of input bits and a second set of bit indices for placing a predetermined bit value, the first set of bit indices comprising a first subset of bit indices and a second subset of bit indices,the values of the input bits comprising an input bit value placed on both a first bit index in the first subset and a second bit index in the second subset, the first bit index based on a first sort order of the first subset of bit indices, and the second bit index based on a second sort order of the second subset of bit indices,the method further comprising:decoding the encoded bits to obtain decoded input bits.21.The method of claim 20, wherein the receiving comprises receiving, from a first communication device by a second communication device in a wireless communication network, a first subset of the encoded bits corresponding to the first subset of bit indices.22.The method of claim 21, further comprising receiving, in an incremental transmission from the first communication device by the second communication device, a second subset of the encoded bits corresponding to the second subset of bit indices.23.The method of any one of claims 20 to 22, wherein the first sort order is different from the second sort order.24.The method of any one of claims 20 to 23, wherein the number of bit indices is a number N, the first subset of bit indices is in an upper set of N / 2 bit indices that includes (N / 2+1) -th to N-th bit indices of the N bit indices, and the second subset of bit indices is in a lower set of N / 2 bit indices that includes first to (N / 2) -th bit indices of the N bit indices.25.The method of any one of claims 20 to 24, wherein the decoding comprises decoding the values of the input bits from the encoded bits according to a non-sequential decoding order that is based on capacity associated with the bit indices in the first set.26.The method of claim 25, wherein the non-sequential decoding order enables decoding of the input bit value that is placed on both the first bit index and the second bit index based on decoding for the first bit index before decoding for the second bit index.27.The method of claim 25, wherein the capacity upon which the non-sequential decoding order is based comprises a dynamic capacity that changes as the encoded bits are decoded.28.The method of claim 27, wherein the decoding according to the non-sequential decoding order comprises switching between decoding for bit indices in the first subset and decoding for bit indices in unique segments of the bit indices in the second subset based on respective capacities associated with the bit indices in the unique segments.29.The method of any one of claims 20 to 24, wherein the decoding comprises:obtaining a decoding starting bit index for sequential decoding; andswitching from the sequential decoding to non-sequential decoding for one or more bit indices in the second subset that are below the starting bit index, based on a switching condition.30.The method of claim 29, wherein the decoding further comprises:resuming the sequential decoding after the non-sequential decoding for the one or more bit indices.31.The method of claim 30, wherein the sequential decoding, the switching, and the resuming are based on an optimal path determination to obtain an optimal order of decoding for the bit indices of the polar code.32.The method of any one of claims 20 to 24, wherein the decoding comprises switching between decoding for bit indices in the first subset and decoding for bit indices in the second subset at one or more switching bit indices that are obtained based on a sequence of the input bit values and the predetermined bit value on the bit indices in the lower set, with the bit indices in the second subset in an order corresponding to an output order of the encoded bits.33.The method of any one of claims 20 to 24, wherein the decoding comprises selecting, from a plurality of predetermined decoding orders, a decoding order for decoding the encoded bits.34.The method of any one of claims 20 to 24, wherein the decoding is according to one of a plurality of decoding orders for respective different code lengths, the decoding orders comprising a decoding order obtained by modifying a decoding order for a shorter code length based on whether a next encoded bit for a next longer code length corresponds to a bit index in the first subset or a bit index in the second subset.35.An apparatus comprising a processor configured to cause the apparatus to perform the method of any one of claims 1 to 19.36.An apparatus comprising:an encoder for encoding input bits by a polar code to obtain encoded bits, the polar code comprising a number of bit indices for placing bit values before encoding, the bit indices comprising: a first set of bit indices for placing values of the input bits and a second set of bit indices for placing a predetermined bit value, the first set of bit indices comprising a first subset of bit indices and a second subset of bit indices,the values of the input bits comprising an input bit value placed on both a first bit index in the first subset and a second bit index in the second subset, the first bit index based on a first sort order of the first subset of bit indices, and the second bit index based on a second sort order of the second subset of bit indices,the apparatus further comprising:an interface coupled to the encoder, for outputting a first subset of the encoded bits corresponding to the first subset of bit indices.37.The apparatus of claim 36, the interface being configured to:transmit, from a first communication device to a second communication device in a wireless communication network, the first subset of the encoded bits.38.The apparatus of claim 37, the interface being further configured to:transmit, in an incremental transmission from the first communication device to the second communication device, a second subset of the encoded bits corresponding to the second subset of bit indices.39.The apparatus of any one of claims 36 to 38, wherein the first sort order is different from the second sort order.40.The apparatus of any one of claims 36 to 39, wherein the number of bit indices is a number N, the first subset of bit indices is in an upper set of N / 2 bit indices that includes (N / 2+1) -th to N-th bit indices of the N bit indices, and the second subset of bit indices is in a lower set of N / 2 bit indices that includes first to (N / 2) -th bit indices of the N bit indices.41.The apparatus of claim 40, wherein the first sort order is an ascending order of rank associated with the upper set of N / 2 bit indices.42.The apparatus of claim 40, wherein the first sort order is an ascending index order associated with the upper set of N / 2 bit indices.43.The apparatus of any one of claim 40 to claim 42, wherein the second sort order is a descending index order associated with the lower set of N / 2 bit indices.44.The apparatus of any one of claim 40 to claim 43,wherein the upper set of N / 2 bit indices comprises S unique segments of bit indices and the lower set of N / 2 bit indices comprises a corresponding S unique segments of bit indices, andwherein the first bit index is in one of the S unique segments of bit indices, and the second bit index is in a respective one of the corresponding S unique segments of bit indices.45.The apparatus of claim 44, wherein the first bit index is further based on a third sort order of the bit indices within each of the S unique segments, and the second bit index is further based on a fourth sort order of the bit indices within each of the corresponding S unique segments.46.The apparatus of claim 45, wherein the third sort order is an ascending index order associated with the bit indices within each of the S unique segments.47.The apparatus of claim 45 or claim 46, wherein the fourth sort order is an ascending order of rank associated with the bit indices within each of the corresponding S unique segments.48.The apparatus of claim 45 or claim 46, wherein the fourth sort order is a descending index order associated with the bit indices within each of the corresponding S unique segments.49.The apparatus of any one of claims 36 to 43,wherein the values of the input bits comprise a plurality of input bit values that are each placed on both a respective first bit index in the first subset based on the first sort order and a respective second bit index in the second subset based on the second sort order,wherein a number of the bit indices in the second subset is based on a reduced code rate.50.The apparatus of any one of claims 36 to 43,wherein the values of the input bits comprise a plurality of input bit values that are each placed on both respective first bit indices in the first subset based on the first sort order and unique segments of the bit indices in the first subset and respective second bit indices in the second subset based on the second sort order and unique segments of the bit indices in the second subset that respectively correspond to the unique segments of the bit indices in the first subset,wherein a number of the bit indices in each of the unique segments of the bit indices in the second subset is based on respective reduced code rates.51.The apparatus of any one of claims 36 to 43,wherein the values of the input bits comprise a plurality of input bit values that are each placed on both respective first bit indices in the first subset based on the first sort order and unique segments of the bit indices in the first subset and respective second bit indices in the second subset based on the second sort order and unique segments of the bit indices in the second subset that respectively correspond to the unique segments of the bit indices in the first subset,wherein a number of bit indices in the second subset is based on a reduced code rate.52.The apparatus of any one of claims 36 to 43,wherein the values of the input bits comprise a plurality of input bit values that are each placed on both respective first bit indices in the first subset further based on unique segments of the bit indices in the first subset and a third sort order of the bit indices within each of the unique segments, and respective second bit indices in the second subset further based on unique segments of the bit indices in the second subset that respectively correspond to the unique segments of the bit indices in the first subset and a fourth sort order of the bit indices within each of the corresponding unique segments,wherein the third sort order for each of the segments of the bit indices in the first subset and the fourth sort order for each respective corresponding unique segment of the bit indices in the second subset are based on a code rate.53.The apparatus of any one of claims 36 to 52, wherein the first sort order and the second sort order are dependent upon a decoding order in which the values of the input bits are to be decoded from the encoded bits.54.The apparatus of any one of claims 36 to 53, wherein the second subset of bit indices comprises bit indices, for the values of the input bits and reducing a number of the encoded bits.55.An apparatus comprising a processor configured to cause the apparatus to perform the method of any one of claims 20 to 34.56.An apparatus comprising:an interface for receiving encoded bits encoded by a polar code, the polar code comprising a number of bit indices for placing bit values before encoding, the bit indices comprising: a first set of bit indices for placing values of input bits and a second set of bit indices for placing a predetermined bit value, the first set of bit indices comprising a first subset of bit indices and a second subset of bit indices,the values of the input bits comprising an input bit value placed on both a first bit index in the first subset and a second bit index in the second subset, the first bit index based on a first sort order of the first subset of bit indices, and the second bit index based on a second sort order of the second subset of bit indices,the apparatus further comprising:a decoder coupled to the interface, for decoding the encoded bits to obtain decoded input bits.57.The apparatus of claim 56, wherein the interface is configured to receive, from a first communication device by a second communication device in a wireless communication network, a first subset of the encoded bits corresponding to the first subset of bit indices.58.The apparatus of claim 57, wherein the interface is further configured to receive, in an incremental transmission from the first communication device by the second communication device, a second subset of the encoded bits corresponding to the second subset of bit indices.59.The apparatus of any one of claims 56 to 58, wherein the first sort order is different from the second sort order.60.The apparatus of any one of claims 56 to 59, wherein the number of bit indices is a number N, the first subset of bit indices is in an upper set of N / 2 bit indices that includes (N / 2+1) -th to N-th bit indices of the N bit indices, and the second subset of bit indices is in a lower set of N / 2 bit indices that includes first to (N / 2) -th bit indices of the N bit indices.61.The apparatus of any one of claims 56 to 60, wherein the decoder is configured to decode the encoded bits by decoding the values of the input bits from the encoded bits according to a non-sequential decoding order that is based on capacity associated with the bit indices in the first set.62.The apparatus of claim 61, wherein the non-sequential decoding order enables decoding of the input bit value that is placed on both the first bit index and the second bit index based on decoding for the first bit index before decoding for the second bit index.63.The apparatus of claim 61, wherein the capacity upon which the non-sequential decoding order is based comprises a dynamic capacity that changes as the encoded bits are decoded.64.The apparatus of claim 63, wherein the decoder is configured to decode according to the non-sequential decoding order by switching between decoding for bit indices in the first subset and decoding for bit indices in unique segments of the bit indices in the second subset based on respective capacities associated with the bit indices in the unique segments.65.The apparatus of any one of claims 56 to 60, wherein the decoder is configured to decode the encoded bits by:obtaining a decoding starting bit index for sequential decoding; andswitching from the sequential decoding to non-sequential decoding for one or more bit indices in the second subset that are below the starting bit index, based on a switching condition.66.The apparatus of claim 65, wherein the decoder is further configured to decode the encoded bits by resuming the sequential decoding after the non-sequential decoding for the one or more bit indices.67.The apparatus of claim 66, wherein the sequential decoding, the switching, and the resuming are based on an optimal path determination to obtain an optimal order of decoding for the bit indices of the polar code.68.The apparatus of any one of claims 56 to 60, wherein the decoder is configured to decode the encoded bits by switching between decoding for bit indices in the first subset and decoding for bit indices in the second subset at one or more switching bit indices that are obtained based on a sequence of the input bit values and the predetermined bit value on the bit indices in the lower set, with the bit indices in the second subset in an order corresponding to an output order of the encoded bits.69.The apparatus of any one of claims 56 to 60, wherein the decoder is configured to decode the encoded bits by selecting, from a plurality of predetermined decoding orders, a decoding order for decoding the encoded bits.70.The apparatus of any one of claims 56 to 60, wherein the decoder is configured to decode according to one of a plurality of decoding orders for respective different code lengths, the decoding orders comprising a decoding order obtained by modifying a decoding order for a shorter code length based on whether a next encoded bit for a next longer code length corresponds to a bit index in the first subset or a bit index in the second subset.71.A computer program comprising programming for execution by a processor, the programming including instructions to perform the method of any one of claims 1 to 34.72.A non-transitory computer readable medium storing programming for execution by a processor, the programming including instructions to perform the method of any one of claims 1 to 34.73.A system comprising:a first communication device configured to transmit a first subset of encoded bits encoded by a polar code, the polar code comprising a number of bit indices for placing bit values before encoding, the bit indices comprising: a first set of bit indices for placing values of input bits and a second set of bit indices for placing a predetermined bit value, the first set of bit indices comprising a first subset of bit indices corresponding to the first subset of the encoded bits and a second subset of bit indices, the values of the input bits comprising an input bit value placed on both a first bit index in the first subset and a second bit index in the second subset, the first bit index based on a first sort order of the first subset of bit indices, and the second bit index based on a second sort order of the second subset of bit indices; anda second communication device configured to receive the first subset of the encoded bits from the first communication device, and to decode the encoded bits to obtain decoded input bits.