math.sh revision 34f9b3eef6fdadbda0a846aa4d68691ac40eace5
########################################################################
# #
# This software is part of the ast package #
# Copyright (c) 1982-2009 AT&T Intellectual Property #
# and is licensed under the #
# Common Public License, Version 1.0 #
# by AT&T Intellectual Property #
# #
# A copy of the License is available at #
# (with md5 checksum 059e8cd6165cb4c31e351f2b69388fd9) #
# #
# Information and Software Systems Research #
# AT&T Research #
# Florham Park NJ #
# #
# David Korn <dgk@research.att.com> #
# #
########################################################################
# @(#)math.sh (AT&T Research) 2009-08-18
command=$0
iffeflags="-n -v"
iffelibs="-lm"
eval $1
shift
table=$1
: check long double
eval `iffe $iffeflags -F ast_standards.h -c "$cc" - tst use_ast_standards -lm 'note{' 'math.h needs ast_standards.h' '}end' 'link{' '#include <math.h>' '#ifndef isgreater' '#define isgreater(a,b) 0' '#endif' 'int main() { return isgreater(0.0,1.0); }' '}end'`
case $_use_ast_standards in
esac
exec < $table
case $_typ_long_double in
esac
;;
esac
done
lib=
case $x in
esac
case $y in
1) case $x in
esac
;;
esac
done
cat <<!
#pragma prototyped
!
case $_use_ast_standards in
1) echo "#include <ast_standards.h>" ;;
esac
echo "#include <math.h>"
case $_hdr_ieeefp in
1) echo "#include <ieeefp.h>" ;;
esac
echo
nl='
'
ht=' '
tab=
case $x:$y in
1:*) f=${name}l
local=
;;
*:1) f=${name}
t=double
local=$_typ_long_double
;;
*=*) f=${aka%%=*}
v=${aka#*=}
case $x:$y in
1:*) f=${f}l
;;
*:1) ;;
*) continue
;;
esac
echo "#ifdef $v${nl}static $r $L(Sfdouble_t x) { return $f(x) == $v; }${nl}#endif"
;;
esac
continue
;;
esac
case $r in
i) L=int r=int R=1 ;;
*) L=Sfdouble_t r=$t R=0 ;;
esac
case $d:$m:$n in
1:*:*|*:1:*)
;;
sep=
case $a in
$p) break ;;
esac
sep=","
done
echo "$code"
;;
esac
1:*:*:*|*:1:*:*|*:*:1:)
args=
code="static $L local_$f("
sep=
case $a in
$p) break ;;
esac
sep=","
done
echo "$code"
f=local_$f
;;
esac
done
done
cat <<!
/*
*/
const struct mathtab shtab_math[] =
{$tab
};
!