<?php
//=========== Laplace, uses row averages ==============//
function da_laplace( $data )
{
$max = 0; $maxk = 0;
foreach( $data as $k1=>$row )
{
$row_sum = 0;
$n = 0;
foreach( $row as $k2=>$cell )
{
$row_sum += $cell;
$n += 1;
}
$data [$k1][] = $row_sum . '/' . $n;
$row_avg = $row_sum / $n;
if( ( is_null($max) || $row_avg > $max ) && !is_null($cell) )
{ $max = $row_avg; $maxk = $k1; }
}
$data [$maxk][ count($data[$maxk])-1 ] = Array( $data [$maxk][ count($data[$maxk])-1 ], 'hlite_1' );
return $data;
}
//=========== Savage's: Calculate Column Maxes ==============//
function da_savage_max( $data, &$output_maxes )
{
$maxes = Array();
foreach( $data as $k1=>$row )
{
foreach( $row as $k2=>$cell )
{
if( !isset($maxes[$k2][0]) || $cell > $maxes[$k2][0] )
{ $maxes[$k2] = Array( $cell, 'hlite_2' ); }
}
}
$data []= $maxes;
$output_maxes = $maxes;
return $data;
}
//=========== Savage's: Calculate Cell Values ==============//
function da_savage_subtract( $data, &$maxes )
{
$data2 = Array();
foreach( $data as $k1=>$row )
{
foreach( $row as $k2=>$cell )
{
$data2 [$k1][$k2] = $maxes[$k2][0] - $cell;
}
}
return $data2;
}
//=========== Savage's: Calculate Result Column Min ==============//
function da_savage_min( $data )
{
$min = null; $mink = Array();
foreach( $data as $k1=>$row )
{
$max = null; $maxk = Array();
foreach( $row as $k2=>$cell )
{
if( ( is_null($max) || $cell > $max ) && !is_null($cell) )
{ $max = $cell; $maxk = Array($k1,$k2); }
}
$data [$k1][]= Array( $max );
$data [$k1][$maxk[1]] = Array( $data [$k1][$maxk[1]], 'hlite_2' );
if( ( is_null($min) || $max < $min ) && !is_null($max) )
{ $min = $max; $mink = Array($k1,$maxk[1]); }
}
$data [$mink[0]][$k2+1] = Array( $data [$mink[0]][$k2+1][0], 'hlite_1' );
return $data;
}
//=========== Wald's: Min of row, max of result column ==============//
function da_walds( $data )
{
$max = null; $maxk = Array();
foreach( $data as $k1=>$row )
{
$min = null; $mink = Array();
foreach( $row as $k2=>$cell )
{
if( ( is_null($min) || $cell < $min ) && !is_null($cell) )
{ $min = $cell; $mink = Array($k1,$k2); }
}
$data [$k1][]= Array( $min );
$data [$k1][$mink[1]] = Array( $data [$k1][$mink[1]], 'hlite_2' );
if( ( is_null($max) || $min > $max ) && !is_null($min) )
{ $max = $min; $maxk = Array($k1,$mink[1]); }
}
$data [$maxk[0]][$k2+1] = Array( $data [$maxk[0]][$k2+1][0], 'hlite_1' );
return $data;
}