#include /* Java Native Interface headers */ #include "EuropeanOptPrice.h" /* Auto-generated header created by javah -jni */ #include /* NAG C Library headers */ #include /* Our C definition of the function s30aac declared in EuropeanOptPrice.java */ JNIEXPORT jint JNICALL Java_EuropeanOptPrice_s30aac (JNIEnv *env, jobject obj, jchar calput, jint m, jint n, jdoubleArray x, jdouble s, jdoubleArray t, jdouble sigma, jdouble r, jdouble q, jdoubleArray p) { static NagError fail; Nag_CallPut iput; Nag_OrderType order; /* First extract the arrays from Java */ jdouble *xpt, *tpt, *ppt; jboolean isCopy; xpt = (*env)->GetDoubleArrayElements(env, x, &isCopy); tpt = (*env)->GetDoubleArrayElements(env, t, &isCopy); ppt = (*env)->GetDoubleArrayElements(env, p, &isCopy); /* Java stores arrays in row order */ order = Nag_RowMajor; /* Convert calput into Nag_CallPut */ if (calput == 'P') { iput = Nag_Put; } else if (calput == 'C') { iput = Nag_Call; } /* Call s30aac */ fail.print = Nag_FALSE; s30aac(order, iput, m, n, xpt, s, tpt, sigma, r, q, ppt, &fail); /* Release the array elements back to Java */ (*env)->ReleaseDoubleArrayElements(env, x, xpt, 0); (*env)->ReleaseDoubleArrayElements(env, t, tpt, 0); (*env)->ReleaseDoubleArrayElements(env, p, ppt, 0); /* Return any fail code that the nagc.dll function s30aac returned. */ return fail.code; }