# allsums: Row, column, and two diagonal sums of arrays In magic: Create and Investigate Magic Squares

## Description

Returns all rowsums, all columnsums, and all (broken) diagonal sums of a putative magic square.

## Usage

 `1` ```allsums(m,func=NULL, ...) ```

## Arguments

 `m` The square to be tested `func` Function, with default `NULL` interpreted as`sum()`, to be applied to the square rowwise, columnwise, and diagonalwise `...` Further arguments passed to `func()`

## Value

Returns a list of four elements. In the following, “sums” means “the result of applying func()”.

 `rowsums` All n row sums `colsums` All n column sums `majors` All n broken major diagonals (northwest-southeast). First element is the long (unbroken) major diagonal, tested by `is.magic()` `minors` All n broken minor diagonals (northeast-southwest). First element is the long (unbroken) minor diagonal.

## Note

If `func()` returns a vector, then the `allsums()` returns a list whose columns are the result of applying `func()`. See third and fourth examples below.

Used by `is.magic()` et seq.

The major and minor diagonals would benefit from being recoded in C.

## Author(s)

Robin K. S. Hankin

`is.magic`,`is.semimagic`,`is.panmagic`
 ```1 2 3 4 5 6 7 8 9``` ```allsums(magic(7)) allsums(magic(7),func=max) allsums(magic(7),func=range) allsums(magic(7),func=function(x){x[1:2]}) allsums(magic(7),sort) # beware! compare apply(magic(7),1,sort) and apply(magic(7),2,sort) ```