System Variable IC
⎕IC - Indeterminate Control
|
||||
| Z is an integer vector whose elements each control a separate aspect of how indeterminates are handled by the system. |
| ⎕IC←R | sets all of the values of the Indeterminate Control Vector to R. |
| ⎕IC←⍬ | sets all of the values of the Indeterminate Control Vector to their system default state. |
| ⎕IC[L]←R | sets the value(s) of the Indeterminate Control Vector indexed by L to R. |
This experimental feature attempts to collect together in one place control of various infinite and indeterminate calculations such as ÷0,
| ⎕IC Index (origin-0) |
Indeterminate Calculation |
Default Result |
|---|---|---|
| 0 | ÷0 | ∞ |
| 1 | ⍟0 | ¯∞ |
| 2 | !N for integer N<0 | DOMAIN ERROR |
| 3 | 0×∞ or ∞×0 | DOMAIN ERROR |
| 4 | 0ׯ∞ or ¯∞×0 | DOMAIN ERROR |
| 5 | 0÷0 | 1 |
| 6 | ∞÷∞ (same sign) | DOMAIN ERROR |
| 7 | ∞÷∞ (different sign) | DOMAIN ERROR |
| 8 | ∞-∞ (same sign) | DOMAIN ERROR |
| 9 | L|±∞ | DOMAIN ERROR |
| 10 | 0*0 | 1 |
| 11 | L*∞ for any L≤¯1 | DOMAIN ERROR |
| 12 | 0⍟0 | DOMAIN ERROR |
| 13 | 0⍟1 | DOMAIN ERROR |
| 14 | 1⍟0 | DOMAIN ERROR |
| 15 | 1⍟1 | 1 |
| 16 | 0*∞ | 0 |
| 17 | 0*¯∞ | ∞ |
| 18 | ±∞*0 | DOMAIN ERROR |
| 19 | 0∨±∞ or ±∞∨0 | DOMAIN ERROR |
| 20 | 0∧±∞ or ±∞∧0 | DOMAIN ERROR |
The values in each element of ⎕IC control the result of the calculation as follows:
| ⎕IC Value | Result |
|---|---|
| ¯1 | ¯1 |
| 0 | 0 |
| 1 | 1 |
| 2 | DOMAIN ERROR |
| 3 | ∞ |
| 4 | ¯∞ |
For example,
⎕IO←0
⎕IC
3 4 2 2 2 1 2 2 2 2 1 2 1 2 2 1 0 3 2 2 2
0÷0
1
⎕IC[5]←2
0÷0
DOMAIN ERROR
0÷0
∧
⎕IC←⍬
⎕IC
3 4 2 2 2 1 2 2 2 2 1 2 1 2 2 1 0 3 2 2 2
To set all indeterminate results to DOMAIN ERROR, use ⎕IC[]←2.
Incomplete List of Indeterminates
That there may be other indeterminates not covered by this feature. Please let us know if you think there are other cases that should be included.
| System Variables (A value may be assigned to these except for ⎕DM) | |||||||||
|---|---|---|---|---|---|---|---|---|---|
| ⎕ALX | ⎕CT | ⎕DM | ⎕DT | ⎕ELX | ⎕FC | ⎕FEATURE | ⎕FPC | ⎕IC | ⎕IO |
| ⎕LR | ⎕LX | ⎕PP | ⎕PR | ⎕PW | ⎕RL | ⎕SA | ⎕WSID | ||
| Niladic System Functions (a value cannot be assigned to these) | |||||||||
| ⎕A | ⎕AV | ⎕EM | ⎕ET | ⎕LC | ⎕NNAMES | ⎕NNUMS | ⎕SI | ⎕SYSID | ⎕SYSVER |
| ⎕T | ⎕TC | ⎕TCBEL | ⎕TCBS | ⎕TCESC | ⎕TCFF | ⎕TCHT | ⎕TCLF | ⎕TCNL | ⎕TCNUL |
| ⎕TS | ⎕WA | ||||||||
| Monadic or dyadic system functions (a value cannot be assigned to these) | |||||||||
| ⎕AT | ⎕CR | ⎕DC | ⎕DFT | ⎕DL | ⎕DR | ⎕EA | ⎕EC | ⎕ERROR | ⎕ES |
| ⎕EX | ⎕FMT | ⎕FX | ⎕MF | ⎕NAPPEND | ⎕NC | ⎕NCREATE | ⎕NERASE | ⎕NINFO | ⎕NL |
| ⎕NLOCK | ⎕NREAD | ⎕NRENAME | ⎕NREPLACE | ⎕NRESIZE | ⎕NSIZE | ⎕NTIE | ⎕NUNTIE | ⎕STOP | ⎕TF |
| ⎕TRACE | ⎕UCS | ⎕VR | |||||||
| Note that quad functions and variables (except for the ⎕A family of functions) are case insensitive | |||||||||