Difference between revisions of "And"

From APL Wiki
Jump to navigation Jump to search
(→‎Extended definition: Split the description for integers and non-integers)
(Move LCM to its own page; see Talk:Or)
 
(One intermediate revision by the same user not shown)
Line 1: Line 1:
{{Built-in|And|∧}} is a [[dyadic]] [[scalar function|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 [[wikipedia:logical conjunction|logical conjunction]] in Boolean logic.
+
{{Built-in|And|∧}} is a [[dyadic]] [[scalar function|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 [[wikipedia:logical conjunction|logical conjunction]] in Boolean logic. In many APLs, And is a special case of the [[LCM]] function.
  
 
{|class=wikitable
 
{|class=wikitable
Line 28: Line 28:
 
0
 
0
 
</source>
 
</source>
 
== 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.
 
 
<source lang=apl>
 
      ∘.∧⍨ 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
 
</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
 
112.5
 
      112.5÷0.9(25÷6)
 
125 27
 
      2J2∧3J1
 
6J2
 
      6J2÷2J2 3J1
 
2J¯1 2
 
</source>{{Works in|[[Dyalog APL]]}}
 
  
 
== External links ==
 
== External links ==
Line 66: Line 34:
  
 
* [http://help.dyalog.com/17.1/#Language/Primitive%20Functions/And%20Lowest%20Common%20Multiple.htm Dyalog]
 
* [http://help.dyalog.com/17.1/#Language/Primitive%20Functions/And%20Lowest%20Common%20Multiple.htm Dyalog]
 +
* [http://microapl.com/apl_help/ch_020_020_430.htm APLX]
 
* J [https://www.jsoftware.com/help/dictionary/d111.htm Dictionary], [https://code.jsoftware.com/wiki/Vocabulary/stardot#dyadic NuVoc]
 
* J [https://www.jsoftware.com/help/dictionary/d111.htm Dictionary], [https://code.jsoftware.com/wiki/Vocabulary/stardot#dyadic NuVoc]
 
{{APL built-ins}}[[Category:Primitive functions]][[Category:Scalar dyadic functions]]
 
{{APL built-ins}}[[Category:Primitive functions]][[Category:Scalar dyadic functions]]

Latest revision as of 15:09, 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. In many APLs, And is a special case of the LCM function.

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

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 DivideFormatExecuteMaterialise
Primitive operators Monadic EachCommuteConstantReplicateExpandReduceWindowed ReduceScanOuter ProductKeyI-beamSpawnFunction axis
Dyadic BindCompositions (Compose, Reverse Compose, Beside, Atop, Over) ∙ Inner ProductPowerAtUnderRankDepthVariantStencil
Quad names
Arrays Index originMigration level
Functions Case convert
Operators SearchReplace