Patch title: Release 85 bulk changes
Abstract:
File: /pliant/graphic/misc/float.pli
Key:
    Removed line
    Added line
abstract
  [A few floatting point utility functions, that should stand elsewhere.]

# Copyright  Hubert Tonneau  hubert.tonneau@pliant.cx
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License version 2
# as published by the Free Software Foundation.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# version 2 along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.


function compute_float_max -> f
  arg Float f
  f := 1
  var Float s := 256
  while s>1
    if f*s=defined
      f *= s
    else
      s /= 2

public

constant float_max compute_float_max
constant float_min -float_max

function min f1 f2 -> f
  arg Float f1 f2 f
  f := shunt f1<=f2 f1 f2

function max f1 f2 -> f
  arg Float f1 f2 f
  f := shunt f1>=f2 f1 f2

function bound f mini maxi -> b
  arg Float f mini maxi b
  b := shunt f<mini mini f>maxi maxi f

function pow2 x -> y
  arg Float x y
  y := x*x