Or

From APL Wiki
Revision as of 04:29, 1 June 2020 by Bubbler (talk | contribs) (→‎Extended definition: Split the description for integers and non-integers)
Jump to navigation Jump to search

Or () is a dyadic scalar boolean function which tests if at least one of the two arguments is true: it returns 1 if at least one side is 1 and 0 if both are 0. It represents the logical disjunction in Boolean logic.

0 1
0 0 1
1 1 1

Examples

The following shows all possible combinations of inputs as a Boolean function.

      0 0 1 1  0 1 0 1
0 1 1 1

When combined with Reduce, Or can be used to test if some value in a Boolean vector is true.

      / 0 0 1 0 1
1
      / 0 0 0 0 0
0

Extended definition

Many APL implementations extend this function to non-Boolean arguments. In this case, this function behaves as Greatest Common Divisor or GCD. For positive integer arguments, it is defined as the largest positive number which divides both numbers. If one of the arguments is zero, the GCD function returns the other number.

      ∘. 0,⍳10
 0 1 2 3 4 5 6 7 8 9 10
 1 1 1 1 1 1 1 1 1 1  1
 2 1 2 1 2 1 2 1 2 1  2
 3 1 1 3 1 1 3 1 1 3  1
 4 1 2 1 4 1 2 1 4 1  2
 5 1 1 1 1 5 1 1 1 1  5
 6 1 2 3 2 1 6 1 2 3  2
 7 1 1 1 1 1 1 7 1 1  1
 8 1 2 1 4 1 2 1 8 1  2
 9 1 1 3 1 1 3 1 1 9  1
10 1 2 1 2 5 2 1 2 1 10
Works in: Dyalog APL

While the mathematical definition of GCD does not cover non-integers, some implementations accept them as arguments. In this case, the return value of RXY is chosen so that both X÷R and Y÷R are integers (or Gaussian integers, when X and/or Y are complex numbers).

      0.613÷3
0.06666666667
      0.6(13÷3)÷0.613÷3
9 65
      2J23J1
1J1
      2J2 3J1÷1J1
2 2J¯1
Works in: Dyalog APL

External links

Documentation

APL built-ins [edit]
Primitive functions
Scalar
Monadic ConjugateNegateSignumReciprocalMagnitudeExponentialNatural LogarithmFloorCeilingFactorialNotPi TimesRollTypeImaginarySquare Root
Dyadic AddSubtractTimesDivideResiduePowerLogarithmMinimumMaximumBinomialComparison functionsBoolean functions (And, Or, Nand, Nor) ∙ GCDLCMCircularComplexRoot
Non-Scalar
Structural ShapeReshapeTallyDepthRavelEnlistTableCatenateReverseRotateTransposeRazeMixSplitEncloseNestCut (K)PairLinkPartitioned EnclosePartition
Selection FirstPickTakeDropUniqueIdentitySelectReplicateExpandSet functions (IntersectionUnionWithout) ∙ Bracket indexingIndex
Selector Index generatorGradeIndex OfInterval IndexIndicesDeal
Computational MatchNot MatchMembershipFindNub SieveEncodeDecodeMatrix InverseMatrix DivideFormatExecuteMaterialiseRange
Primitive operators Monadic EachCommuteConstantReplicateExpandReduceWindowed ReduceScanOuter ProductKeyI-beamSpawnFunction axis
Dyadic BindCompositions (Compose, Reverse Compose, Beside, Atop, Over) ∙ Inner ProductPowerAtUnderRankDepthVariantStencilCut (J)
Quad names
Arrays Index originMigration levelAtomic vector
Functions Case convertUnicode convert
Operators SearchReplace