da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin########################################################################
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# This software is part of the ast package #
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner# Copyright (c) 1982-2010 AT&T Intellectual Property #
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# and is licensed under the #
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# Common Public License, Version 1.0 #
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin# by AT&T Intellectual Property #
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# A copy of the License is available at #
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# (with md5 checksum 059e8cd6165cb4c31e351f2b69388fd9) #
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# Information and Software Systems Research #
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# AT&T Research #
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# Florham Park NJ #
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# David Korn <dgk@research.att.com> #
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin########################################################################
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz# @(#)math.sh (AT&T Research) 2009-08-18
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin: check long double
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chineval `iffe $iffeflags -c "$cc" - typ long.double 2>&$stderr`
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainzeval `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'`
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chineval `iffe $iffeflags -c "$cc" - lib $tests $iffehdrs $iffelibs 2>&$stderr`
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chineval `iffe $iffeflags -c "$cc" - dat,npt,mac $lib $iffehdrs $iffelibs 2>&$stderr`
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#pragma prototyped
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinecho "#include <math.h>"
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chindo eval x='$'_lib_${name}l y='$'_lib_${name} r='$'TYPE_${name} a='$'ARGS_${name} aka='$'AKA_${name}
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin case $x:$y in
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz *=*) f=${aka%%=*}
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz 1:*) f=${f}l
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz echo "#ifdef $v${nl}static $r $L(Sfdouble_t x) { return $f(x) == $v; }${nl}#endif"
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz tab="$tab$nl#ifdef $v$nl$ht\"\\0${R}${a}${name}\",$ht(Math_f)${L},${nl}#endif"
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin i) L=int r=int R=1 ;;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin case $d:$m:$n in
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin $p) break ;;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin $p) break ;;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin * first byte is two-digit octal number. Last digit is number of args