void find_GSL_3d(const float *indata, int _sizeT,int _sizeI,int _sizeJ, double *outdata, float temp, float fill_val, int indexMiddleOfYear) { setGlobalVariables(_sizeT,_sizeI,_sizeJ); int i,j; for (i = 0; i < sizeI; i++) { for (j = 0; j < sizeJ; j++) { outdata[i*sizeJ+j] = find_GSL_1d(indata,i,j,temp, fill_val, indexMiddleOfYear); } } }
void dj_init() { //before anything starts, define global variables struct tossim_global_variables* global_variables = malloc(sizeof(struct tossim_global_variables)); struct tossim_UGLY_global_variables* UGLY_global_variables = malloc(sizeof(struct tossim_UGLY_global_variables)); setGlobalVariables(global_variables); setUglyGlobalVariables(UGLY_global_variables); dj_vm *vm; unsigned char *mem = malloc(HEAPSIZE); // initialise memory manager dj_mem_init(mem, HEAPSIZE); _global_ref_t_base_address = (char*)mem - 42; // initialise timer dj_timer_init(); // create a new VM vm = dj_vm_create(); if (vm == nullref) { //fail with a unknown type exception dj_panic(-1); } // tell the execution engine to use the newly created VM instance dj_exec_setVM(vm); // load the embedded infusions dj_named_native_handler handlers[] = { { "base", &base_native_handler }, { "darjeeling", &darjeeling_native_handler } #ifdef WITH_RADIO ,{ "radio", &radio_native_handler } #endif }; int length = sizeof(handlers)/ sizeof(handlers[0]); archive.start = (dj_di_pointer)di_archive_data; archive.end = (dj_di_pointer)(di_archive_data + di_archive_size); dj_vm_loadInfusionArchive(vm, &archive, handlers, length); // load the embedded infusions DARJEELING_PRINTF("%d infusions loaded\n", dj_vm_countInfusions(dj_exec_getVM())); // pre-allocate an OutOfMemoryError object dj_object *obj = dj_vm_createSysLibObject(dj_exec_getVM(), BASE_CDEF_java_lang_OutOfMemoryError); dj_mem_setPanicExceptionObject(obj); }
void find_max_sum_slidingwindow_3d(const float *indata, int _sizeT, int _sizeI, int _sizeJ, double *outdata, int w_width, float fill_val) { // find max sum of a consecutif sequence of w_width elements (sliding window of size=w_width) (along time axis) setGlobalVariables(_sizeT,_sizeI,_sizeJ); int i,j; for (i = 0; i < sizeI; i++) { for (j = 0; j < sizeJ; j++) { outdata[i*sizeJ+j] = get_max_sum_window_1d(indata, i, j, w_width, fill_val); } } }
// fonction appelee depus python void find_max_len_consec_sequence_3d(const float *indata, int _sizeT,int _sizeI,int _sizeJ, double *outdata, float temp, float fill_val, char *operation) { // find max length of a consecutif sequence in 3D array (along time axis) in a logical condition //outdata = (double *) malloc (_sizeI*_sizeJ*sizeof(double)); setGlobalVariables(_sizeT,_sizeI,_sizeJ); int i,j; //printf("coucou"); for (i = 0; i < sizeI; i++) { for (j = 0; j < sizeJ; j++) { //outdata[i*sizeJ+j] = find_max_len_consec_sequence_1d(indata,i,j,temp); outdata[i*sizeJ+j] = find_max_len_consec_sequence_1d(indata,i,j,temp, fill_val, operation); } } }