And: Difference between revisions

From APL Wiki
Jump to navigation Jump to search
No edit summary
(→‎Extended definition: Split the description for integers and non-integers)
Line 31: Line 31:
== Extended definition ==
== Extended definition ==


Many APL implementations extend this function to non-Boolean arguments. In this case, this function behaves as '''[[wikipedia:Least common multiple|Least Common Multiple]]''' or '''LCM'''. For positive integer arguments, it is defined as the smallest positive number which is divisible by both numbers. If one of the arguments is zero, the LCM function returns zero. While the mathematical definition of LCM does not cover non-integers, some implementations accept them as arguments, returning a value which, when divided by both arguments, gives integers (or [[wikipedia:Gaussian integer|Gaussian integers]], when given [[complex]] numbers).
Many APL implementations extend this function to non-Boolean arguments. In this case, this function behaves as '''[[wikipedia:Least common multiple|Least Common Multiple]]''' or '''LCM'''. For positive integer arguments, it is defined as the smallest positive number which is divisible by both numbers. If one of the arguments is zero, the LCM function returns zero.


<source lang=apl>
<source lang=apl>
Line 46: Line 46:
0  9 18  9 36 45 18 63 72  9 90
0  9 18  9 36 45 18 63 72  9 90
0 10 10 30 20 10 30 70 40 90 10
0 10 10 30 20 10 30 70 40 90 10
</source>{{Works in|[[Dyalog APL]]}}


While the mathematical definition of LCM does not cover non-integers, some implementations accept them as arguments. In this case, the return value of <source lang=apl inline>R←X∧Y</source> is chosen so that both <source lang=apl inline>R÷X</source> and <source lang=apl inline>R÷Y</source> are integers (or [[wikipedia:Gaussian integer|Gaussian integers]], when X and/or Y are [[complex]] numbers).
<source lang=apl>
       0.9∧25÷6
       0.9∧25÷6
112.5
112.5

Revision as of 04:32, 1 June 2020

And () is a dyadic scalar boolean function which tests if both arguments are true: it returns 1 if both are 1 and 0 if one or both are 0. It represents the logical conjunction in Boolean logic.

0 1
0 0 0
1 0 1

Examples

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

      0 0 1 1 ∧ 0 1 0 1
0 0 0 1

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

      ∧/ 1 1 1 1 1
1
      ∧/ 1 0 0 1 1
0

Extended definition

Many APL implementations extend this function to non-Boolean arguments. In this case, this function behaves as Least Common Multiple or LCM. For positive integer arguments, it is defined as the smallest positive number which is divisible by both numbers. If one of the arguments is zero, the LCM function returns zero.

      ∘.∧⍨ 0,⍳10
0  0  0  0  0  0  0  0  0  0  0
0  1  2  3  4  5  6  7  8  9 10
0  2  2  6  4 10  6 14  8 18 10
0  3  6  3 12 15  6 21 24  9 30
0  4  4 12  4 20 12 28  8 36 20
0  5 10 15 20  5 30 35 40 45 10
0  6  6  6 12 30  6 42 24 18 30
0  7 14 21 28 35 42  7 56 63 70
0  8  8 24  8 40 24 56  8 72 40
0  9 18  9 36 45 18 63 72  9 90
0 10 10 30 20 10 30 70 40 90 10
Works in: Dyalog APL

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

      0.9∧25÷6
112.5
      112.5÷0.9(25÷6)
125 27
      2J2∧3J1
6J2
      6J2÷2J2 3J1
2J¯1 2
Works in: Dyalog APL

External links

Documentation

APL built-ins [edit]
Primitives (Timeline) Functions
Scalar
Monadic ConjugateNegateSignumReciprocalMagnitudeExponentialNatural LogarithmFloorCeilingFactorialNotPi TimesRollTypeImaginarySquare Root
Dyadic AddSubtractTimesDivideResiduePowerLogarithmMinimumMaximumBinomialComparison functionsBoolean functions (And, Or, Nand, Nor) ∙ GCDLCMCircularComplexRoot
Non-Scalar
Structural ShapeReshapeTallyDepthRavelEnlistTableCatenateReverseRotateTransposeRazeMixSplitEncloseNestCut (K)PairLinkPartitioned EnclosePartition
Selection FirstPickTakeDropUniqueIdentityStopSelectReplicateExpandSet functions (IntersectionUnionWithout) ∙ Bracket indexingIndexCartesian ProductSort
Selector Index generatorGradeIndex OfInterval IndexIndicesDealPrefix and suffix vectors
Computational MatchNot MatchMembershipFindNub SieveEncodeDecodeMatrix InverseMatrix DivideFormatExecuteMaterialiseRange
Operators Monadic EachCommuteConstantReplicateExpandReduceWindowed ReduceScanOuter ProductKeyI-BeamSpawnFunction axis
Dyadic BindCompositions (Compose, Reverse Compose, Beside, Withe, Atop, Over) ∙ Inner ProductDeterminantPowerAtUnderRankDepthVariantStencilCutDirect definition (operator)
Quad names Index originComparison toleranceMigration levelAtomic vector