# max/3

### Module: builtins

`max/3`

— Returns the maximum of results of evaluating two arithmetic Exprs

`min/3`

— Returns the minimum of results of evaluating two arithmetic Exprs

`maximum/2`

— Returns the maximum of the evaluations of the expressions on ExprList

`minimum/2`

— Returns the minimum of the evaluations of the expressions on ExprList

`sumlist/2`

— Returns the sum of the evaluations of the numbers on ExprList

`prodlist/2`

— Returns the product of the evaluations of the numbers on ExprList

`sum_squares/2`

— Returns the sum of the squares of the evaluations of the numbers on ExprList

`sum_square_diffs/3`

— Returns the sum of squares of differences of XList,YList

`max_vector/3`

— Returns the result of iteratively taking the max of Left,Right

`min_vector/3`

— Returns the result of iteratively taking the min of Left,Right

## FORMS

`max(Expr1,Expr2,NumResult)`

`min(Expr1,Expr2,NumResult)`

`maximum(ExprList, NumResult)`

`minimum(ExprList, NumResult)`

`sumlist(ExprList, NumResult)`

`prodlist(ExprList, NumResult)`

`sum_squares(ExprList, NumResult)`

`sum_square_diffs(XList, YList, NumResult)`

`max_vector(Left, Right, VectorResult)`

`min_vector(Left, Right, VectorResult)`

## DESCRIPTION

** max/3** If Expr1 and Expr2 are arithmetic expressions which are ground at the
time of evaluation, then NumResult is the maximum of the results of
evaluation of Expr1 and Expr2 with is/2.

** min/3** If Expr1 and Expr2 are arithmetic expressions which are ground at the
time of evaluation, then NumResult is the minimum of the results of
evaluation of Expr1 and Expr2 with is/2.

** maximum/2** If ExprList is a list of arithmetic expressions which are all
ground at the time of evaluation, then NumResult is the maximum
of the evaluations of all the expressions on ExprList. If
ExprList = [], then NumResult = -0inf.

** minimum/2** If ExprList is a list of arithmetic expressions which are all
ground at the time of evaluation, then NumResult is the minimum
of the evaluations of all the expressions on ExprList. If
ExprList = [], then NumResult = 0inf.

** sumlist/2** If ExprList is a list of arithmetic expressions which are all
ground at the time of evaluation, then NumResult is the sum
of the evaluations of all the numbers on ExprList.
If ExprList = [], then NumResult = 0.

** prodlist/2** If ExprList is a list of arithmetic expressions which are all
ground at the time of evaluation, then NumResult is the product
of the evaluations of all the numbers on ExprList.
If ExprList = [], then NumResult = 1.

** sum_squares/2** If ExprList is a list of arithmetic expressions which are all
ground at the time of evaluation, then NumResult is the sum
of the squares of the evaluations of all the numbers on ExprList.
If ExprList = [], then NumResult = 0.

** sum_square_diffs/3** If XList and YList are both lists of numbers and are of the
same length, then NumResult is the sum of the squares of the
pairwise differences of XList and YList; that is
NumResult = (X1-Y1)^2 + (X2-Y2)^2 + …
If XList = YList = [], then NumResult = 0.

** max_vector/3** If Left and Right are both lists of numbers which are the same
length and are ground at the time evaluation, then VectorResult is the
list of numbers of the same length as Left,Right, and such that
the nth element of VectorResult is the max of the nth elements of
Left and Right, respectively.

** min_vector/3** If Left and Right are both lists of numbers which are the same
length and are ground at the time evaluation, then VectorResult is the
list of numbers of the same length as Left,Right, and such that
the nth element of VectorResult is the min of the nth elements of
Left and Right, respectively.

## EXAMPLES

`max/3`

```
?- max(3,92,M1), max(3,50-92,M2), max(-6,-7*9,M3), max(23.89, 23.87,M4).
M1=92
M2=3
M3=-6
M4=23.89
```

`min/3`

```
?- min(3,92,M1), min(3*1,-0-92,M2), min(-6*(-5),-9,M3), min(23.89, 23.87,M4).
M1=3
M2=-92
M3=-9
M4=23.87
```

`maximum/2`

```
?- maximum([3.4, 2+3, -6*1.78, 123.4456], M1),
?_ maximum([-3.4, -5, -6.78, -123.4456], M2).
M1=123.4456
M2=-3.4
```

`minimum/2`

```
?- minimum([3.4, 5*5, -6*1.78, 9+123.4456], M1),
?_ minimum([-3.4+9, -5*6, -6.78, -123.4456], M2).
M1=-6*1.78
M2=-123.4456
```

`sumlist/2`

```
?- sumlist([3.4, 5*5, -6*1.78, 9+123.4456], M1),
?_ sumlist([-3.4+9, -5*6, -6.78, -123.4456], M2).
M1=150.1656
M2=-154.6256
```

`prodlist/2`

```
?- prodlist([3.4, 5*5, -6*1.78, 9+123.4456], M1),
?_ prodlist([-3.4+9, -5*6, -6.78, -123.4456], M2).
M1=-120234.1157
M2=-140609.4762
```

`sum_squares/2`

```
?- sum_squares([3,4], M1), sum_squares([88 + 0.98, 4.3*6.77], M2).
M1=25
M2=8764.890721
```

`sum_square_diffs/3`

```
?- XList = [4.3*1, 4+20.88], YList = [5.12+2.3, 3*20.44],
?_ sum_square_diffs(XList, YList, Result).
XList=[4.3*1,4+20.88]
YList=[5.12+2.3,3*20.44]
Result=1337.608
```

`max_vector/3`

```
?- Left = [3, 4.1 + 0.4, 88.9], Right = [0.6 * 2, 8.44, 100.9],
?_ max_vector(Left, Right, Result).
Left=[3,4.1+0.4,88.9]
Right=[0.6*2,8.44,100.9]
Result=[3,8.44,100.9]
```

`min_vector/3`

```
?- Left = [3, 4.1 + 0.4, 88.9], Right = [0.6 * 2, 8.44, 100.9],
?_ min_vector(Left, Right, Result).
Left=[3,4.1+0.4,88.9]
Right=[0.6*2,8.44,100.9]
Result=[1.2,4.5,88.9]
```