/* Multiply two reals together, returning the result */ DLLEXPORT int demo1_R_R( WolframLibraryData libData, mint Argc, MArgument *Args, MArgument Res) { mreal R0; mreal R1; R0 = MArgument_getReal(Args[0]); R1 = R0 * R0; MArgument_setReal(Res, R1); return LIBRARY_NO_ERROR; }
EXTERN_C DLLEXPORT int SourceTime(WolframLibraryData libData, mint Argc, MArgument * Args, MArgument Res) { // Get the timestamp mreal time; time = (mreal)VR.m_timestamp * 0.0000001; MArgument_setReal(Res, time); return LIBRARY_NO_ERROR; }
DLLEXPORT int parabola(WolframLibraryData libData, mint Argc, MArgument *Args, MArgument Res) { mreal x, a, f; if (Argc != 2) return LIBRARY_FUNCTION_ERROR; x = MArgument_getReal(Args[0]); a = MArgument_getReal(Args[1]); f = x*x - a; MArgument_setReal(Res, f); return 0; }
/* Gets the I0 th Real number from the rank 1 tensor T0 */ DLLEXPORT int demo_TI_R( WolframLibraryData libData, mint Argc, MArgument *Args, MArgument Res) { MTensor T0; mint I0; mreal R0; int err = LIBRARY_NO_ERROR; T0 = MArgument_getMTensor(Args[0]); I0 = MArgument_getInteger(Args[1]); err = libData->MTensor_getReal(T0, &I0, &R0); if (err) return err; MArgument_setReal(Res, R0); return LIBRARY_NO_ERROR; }
/* Returns Sum[i*R0, {i, I0}] */ DLLEXPORT int Function01( WolframLibraryData libData, mint Argc, MArgument *Args, MArgument Res) { mreal R0; mint I0; mint i; mreal R1; I0 = MArgument_getInteger(Args[0]); R0 = MArgument_getReal(Args[1]); R1 = 0; for ( i = 0; i < I0; i++) { R1 = R1 + i*R0; } MArgument_setReal(Res, R1); return LIBRARY_NO_ERROR; }
/* Gets the I0,I1 th real element of T0 returning that value */ DLLEXPORT int demo_TII_R(WolframLibraryData libData, mint Argc, MArgument *Args, MArgument Res) { MTensor T0; mint I0, I1; mreal res; mint dims[2]; int err = LIBRARY_NO_ERROR; T0 = MArgument_getMTensor(Args[0]); I0 = MArgument_getInteger(Args[1]); I1 = MArgument_getInteger(Args[2]); dims[0] = I0; dims[1] = I1; err = libData->MTensor_getReal(T0, dims, &res); MArgument_setReal(Res, res); return err; }