/* * @(#)mwservices.h generated by: makeheader 4.21 Sat Jan 29 15:55:29 2005 * * built from: ../../src/include/copyright.h * ../../src/include/pragma_interface.h * config/license.cpp * config/prefs.cpp * io/capturebuf.cpp * io/cdroot.c * io/console.cpp * io/efopen.cpp * io/filedir.cpp * io/filestat.cpp * io/history_date.cpp * io/iocbk.cpp * io/iofun.cpp * io/isdos.cpp * io/pathset.cpp * io/printca.cpp * io/printmat.cpp * io/printnd.cpp * io/prtopaq.cpp * io/prtstruc.cpp * io/strserv.c * io/uctrans.cpp * io/xlate.cpp * lmgr/dongle.c * lmgr/lmgr.cpp * lmgr/lmgrbusyreg.cpp * mat_thread_req/request_queue.cpp * state/feature.cpp * state/memcounters.cpp * state/mlcharset.cpp * state/mllang.cpp * state/mlmode.cpp * state/mlruntime.cpp * state/mlterm.cpp * state/mlver.cpp * state/stcbk.cpp * svx/complex_scalarw.cpp * svx/complex_vector.cpp * svx/double_scalarw.cpp * svx/double_vector.cpp * svx/int_math.cpp * svx/int_mmx.cpp * svx/log_scalar.cpp * svx/log_vector.cpp * svx/svMath.cpp */ #ifndef mwservices_h #define mwservices_h /* * Copyright 1984-2003 The MathWorks, Inc. * All Rights Reserved. */ /* Copyright 2003 The MathWorks, Inc. */ /* * Prevent g++ from making copies of vtable and typeinfo data * in every compilation unit. By allowing for only one, we can * save space and prevent some situations where the linker fails * to coalesce them properly into a single entry. * * References: * http://gcc.gnu.org/onlinedocs/gcc/Vague-Linkage.html#Vague%20Linkage * http://gcc.gnu.org/onlinedocs/gcc/C---Interface.html */ #ifdef __cplusplus # ifdef __linux__ # pragma interface # endif #endif #ifdef __cplusplus extern "C" { #endif #ifdef __cplusplus } /* extern "C" */ #endif #ifdef __cplusplus extern "C" { #endif #ifdef __cplusplus } /* extern "C" */ #endif #ifdef __cplusplus extern "C" { #endif #ifdef __cplusplus } /* extern "C" */ #endif #include "mwutil.h" #ifdef __cplusplus extern "C" { #endif #define svDoubleScalarPlusW(a,b,c) utDoubleScalarPlus(a,b) #define svDoubleScalarMinusW(a,b,c) utDoubleScalarMinus(a,b) #define svDoubleScalarTimesW(a,b,c) utDoubleScalarTimes(a,b) #define svDoubleScalarUminusW(a,b) utDoubleScalarUminus(a) #define svDoubleScalarUplusW(a,b) utDoubleScalarUplus(a) #define svDoubleScalarAnd(a,b) svDoubleScalarAndW(a,b) #define svDoubleScalarOr(a,b) svDoubleScalarOrW(a,b) #define svDoubleScalarXor(a,b) svDoubleScalarXorW(a,b) #define svDoubleScalarNot(a) svDoubleScalarNotW(a) #define svDoubleScalarLtW(a,b,c) utDoubleScalarLt(a,b) #define svDoubleScalarLeW(a,b,c) utDoubleScalarLe(a,b) #define svDoubleScalarGtW(a,b,c) utDoubleScalarGt(a,b) #define svDoubleScalarGeW(a,b,c) utDoubleScalarGe(a,b) #define svDoubleScalarEqW(a,b,c) utDoubleScalarEq(a,b) #define svDoubleScalarNeW(a,b,c) utDoubleScalarNe(a,b) #define svDoubleScalarNe(a,b) svDoubleScalarNeW(a,b,NULL) #define svDoubleScalarEq(a,b) svDoubleScalarEqW(a,b,NULL) #define svDoubleScalarGe(a,b) svDoubleScalarGeW(a,b,NULL) #define svDoubleScalarGt(a,b) svDoubleScalarGtW(a,b,NULL) #define svDoubleScalarLe(a,b) svDoubleScalarLeW(a,b,NULL) #define svDoubleScalarLt(a,b) svDoubleScalarLtW(a,b,NULL) #define svDoubleScalarUplus(a) svDoubleScalarUplusW(a,NULL) #define svDoubleScalarUminus(a) svDoubleScalarUminusW(a,NULL) #define svDoubleScalarTimes(a,b) svDoubleScalarTimesW(a,b,NULL) #define svDoubleScalarMinus(a,b) svDoubleScalarMinusW(a,b,NULL) #define svDoubleScalarPlus(a,b) svDoubleScalarPlusW(a,b,NULL) #define svDoubleScalarRem(a,b) svDoubleScalarRemW(a,b,NULL) #define svDoubleScalarLog(a) svDoubleScalarLogW(a,NULL) #define svDoubleScalarLog10(a) svDoubleScalarLog10W(a,NULL) #define svDoubleScalarLog2(a) svDoubleScalarLog2W(a,NULL) #define svDoubleScalarMod(a,b) utDoubleScalarMod(a,b) #define svDoubleScalarMax(a,b) utDoubleScalarMax(a,b) #define svDoubleScalarMin(a,b) utDoubleScalarMin(a,b) #define svDoubleScalarCtranspose(a) utDoubleScalarCtranspose(a) #define svDoubleScalarTranspose(a) utDoubleScalarTranspose(a) #define svDoubleScalarAbs(a) utDoubleScalarAbs(a) #define svDoubleScalarAcos(a) utDoubleScalarAcos(a) #define svDoubleScalarAcosh(a) utDoubleScalarAcosh(a) #define svDoubleScalarAcot(a) utDoubleScalarAcot(a) #define svDoubleScalarAcoth(a) utDoubleScalarAcoth(a) #define svDoubleScalarAcsc(a) utDoubleScalarAcsc(a) #define svDoubleScalarAcsch(a) utDoubleScalarAcsch(a) #define svDoubleScalarAll(a) utDoubleScalarAll(a) #define svDoubleScalarAny(a) utDoubleScalarAny(a) #define svDoubleScalarAngle(a) utDoubleScalarAngle(a) #define svDoubleScalarAsec(a) utDoubleScalarAsec(a) #define svDoubleScalarAsech(a) utDoubleScalarAsech(a) #define svDoubleScalarAsin(a) utDoubleScalarAsin(a) #define svDoubleScalarAsinh(a) utDoubleScalarAsinh(a) #define svDoubleScalarAtan(a) utDoubleScalarAtan(a) #define svDoubleScalarAtan2(a,b) utDoubleScalarAtan2(a,b) #define svDoubleScalarAtanh(a) utDoubleScalarAtanh(a) #define svDoubleScalarCeil(a) utDoubleScalarCeil(a) #define svDoubleScalarCos(a) utDoubleScalarCos(a) #define svDoubleScalarCosh(a) utDoubleScalarCosh(a) #define svDoubleScalarDot(a) utDoubleScalarDot(a) #define svDoubleScalarDouble(a) utDoubleScalarDouble(a) #define svDoubleScalarExp(a) utDoubleScalarExp(a) #define svDoubleScalarFloor(a) utDoubleScalarFloor(a) #define svDoubleScalarFull(a) utDoubleScalarFull(a) #define svDoubleScalarInt8(a) utDoubleScalarInt8(a) #define svDoubleScalarInt16(a) utDoubleScalarInt16(a) #define svDoubleScalarInt32(a) utDoubleScalarInt32(a) #define svDoubleScalarIsempty(a) utDoubleScalarIsempty(a) #define svDoubleScalarIsfinite(a) utDoubleScalarIsfinite(a) #define svDoubleScalarIslogical(a) utDoubleScalarIslogical(a) #define svDoubleScalarIsmember(a,b) utDoubleScalarIsmember(a,b) #define svDoubleScalarIsreal(a) utDoubleScalarIsreal(a) #define svDoubleScalarIssparse(a) utDoubleScalarIssparse(a) #define svDoubleScalarLength(a) utDoubleScalarLength(a) #define svDoubleScalarNdims(a) utDoubleScalarNdims(a) #define svDoubleScalarPower(a,b) utDoubleScalarPower(a,b) #define svDoubleScalarPow2(a) utDoubleScalarPow2(a) #define svDoubleScalarReal(a) utDoubleScalarReal(a) #define svDoubleScalarRound(a) utDoubleScalarRound(a) #define svDoubleScalarSec(a) utDoubleScalarSec(a) #define svDoubleScalarSech(a) utDoubleScalarSech(a) #define svDoubleScalarSign(a) utDoubleScalarSign(a) #define svDoubleScalarSin(a) utDoubleScalarSin(a) #define svDoubleScalarSingle(a) utDoubleScalarSingle(a) #define svDoubleScalarSinh(a) utDoubleScalarSinh(a) #define svDoubleScalarSqrt(a) utDoubleScalarSqrt(a) #define svDoubleScalarTan(a) utDoubleScalarTan(a) #define svDoubleScalarTanh(a) utDoubleScalarTanh(a) #define svDoubleScalarUint8(a) utDoubleScalarUint8(a) #define svDoubleScalarUint16(a) utDoubleScalarUint16(a) #define svDoubleScalarUint32(a) utDoubleScalarUint32(a) #ifdef __cplusplus } #endif /* * NOTE: The accelerator is relying on the fact that the following logical operators are * implemented as macros for performance. */ /* a | b */ #define svDoubleScalarOrW(a,b) (utIsNaN(a) || utIsNaN(b) \ ? (svNaNConversionError(), \ utGetNaN()) \ : utDoubleScalarOr(a,b)) /* ~a */ #define svDoubleScalarNotW(a) (utIsNaN(a) \ ? (svNaNConversionError(), \ utGetNaN()) \ : utDoubleScalarNot(a)) /* a & b */ #define svDoubleScalarAndW(a,b) (utIsNaN(a) || utIsNaN(b) \ ? (svNaNConversionError(), \ utGetNaN()) \ : utDoubleScalarAnd(a,b)) /* xor(a,b) */ #define svDoubleScalarXorW(a,b) ( utIsNaN(b) || utIsNaN(a) \ ? (svNaNConversionError(), \ utGetNaN()) \ : utDoubleScalarXor(a,b)) /* cot(a) */ #define svDoubleScalarCotW(a,b) ( utEQZero(a) \ ? ( !*b \ ? (svDivideByZeroWarning(), *b = true, utGetInf()) \ : utDoubleScalarCot(a)) \ : utDoubleScalarCot(a)) #define svDoubleScalarCot(a) ( utEQZero(a) \ ? (svDivideByZeroWarning(), utGetInf()) \ : utDoubleScalarCot(a)) /* coth(a) */ #define svDoubleScalarCothW(a,b) ( utEQZero(a) \ ? ( !*b \ ? (svDivideByZeroWarning(), *b = true, utGetInf()) \ : utDoubleScalarCoth(a)) \ : utDoubleScalarCoth(a)) #define svDoubleScalarCoth(a) ( utEQZero(a) \ ? (svDivideByZeroWarning(), utGetInf()) \ : utDoubleScalarCoth(a)) /* csc(a) */ #define svDoubleScalarCscW(a,b) ( utEQZero(a) \ ? ( !*b \ ? (svDivideByZeroWarning(), *b = true, utGetInf()) \ : utDoubleScalarCsc(a)) \ : utDoubleScalarCsc(a)) #define svDoubleScalarCsc(a) ( utEQZero(a) \ ? (svDivideByZeroWarning(), utGetInf()) \ : utDoubleScalarCsc(a)) /* csch(a) */ #define svDoubleScalarCschW(a,b) ( utEQZero(a) \ ? ( !*b \ ? (svDivideByZeroWarning(), *b = true, utGetInf()) \ : utDoubleScalarCsch(a)) \ : utDoubleScalarCsch(a)) #define svDoubleScalarCsch(a) ( utEQZero(a) \ ? (svDivideByZeroWarning(), utGetInf()) \ : utDoubleScalarCsch(a)) #define svDivZero(x) (utGTZero(x) ? utGetInf() : \ utLTZero(x) ? -utGetInf() : utGetNaN()) /* * NOTE: The accelerator is relying on the fact that rdivide and ldivide are * implemented as macros for performance. */ /* a/b and a./b */ #define svDoubleScalarRdivide_Inline(a, b) \ ( utNEZero(b) \ ? (a)/(b) \ : (svDivideByZeroWarning() , (a)/(b))) #define svDoubleScalarRdivideW_Inline(a, b, c) \ ( utNEZero(b) \ ? (a)/(b) \ : ( !*c ? (svDivideByZeroWarning() , *c = true, (a)/(b)) \ : (a)/(b))) /* a\b and a.\b */ #define svDoubleScalarLdivide_Inline(a, b) svDoubleScalarRdivide_Inline(b, a) #define svDoubleScalarLdivideW_Inline(a, b, c) svDoubleScalarRdivideW_Inline(b, a, c) #ifdef __cplusplus extern "C" { #endif extern void svDivideByZeroWarning(void); #ifdef __cplusplus } #endif #ifdef __cplusplus extern "C" { #endif extern void svNaNConversionError(void); #ifdef __cplusplus } #endif #ifdef __cplusplus extern "C" { #endif extern double svDoubleScalarRdivideW(double a, double b, bool *c); #ifdef __cplusplus } #endif #ifdef __cplusplus extern "C" { #endif extern double svDoubleScalarRdivide(double a, double b); #ifdef __cplusplus } #endif #ifdef __cplusplus extern "C" { #endif extern double svDoubleScalarLdivideW(double a, double b, bool *c); #ifdef __cplusplus } #endif #ifdef __cplusplus extern "C" { #endif extern double svDoubleScalarLdivide(double a, double b); #ifdef __cplusplus } #endif #ifdef __cplusplus extern "C" { #endif /* remW(a,b,c) */ /* Remainder after division function c is a boolean pointer that activates (false) or not the zero warning */ extern double svDoubleScalarRemW( double a, double b, bool *c); #ifdef __cplusplus } #endif #ifdef __cplusplus extern "C" { #endif /* log(a,b) */ /* Natural logarithm of a b is a boolean pointer that activates (false) or not the warning */ extern double svDoubleScalarLogW(double a, bool *b); #ifdef __cplusplus } #endif #ifdef __cplusplus extern "C" { #endif /* log2(a,b) */ /* Base 2 logarithm of a b is a boolean pointer that activates (false) or not the warning */ extern double svDoubleScalarLog2W(double a, bool *b); #ifdef __cplusplus } #endif #ifdef __cplusplus extern "C" { #endif /* log10(a,b) */ /* Common (base 10) logarithm of a b is a boolean pointer that activates (false) or not the warning */ extern double svDoubleScalarLog10W(double a, bool *b); #ifdef __cplusplus } #endif #endif /* mwservices_h */