comparison extra/NaN/src/covm_mex.cpp @ 12685:f26b1170ea90 octave-forge

resulting values should be really converted to output data type
author schloegl
date Sat, 12 Sep 2015 07:15:01 +0000
parents de98e4cb9248
children 6d6285a2a633
comparison
equal deleted inserted replaced
12684:29631e455f62 12685:f26b1170ea90
360 continue; 360 continue;
361 } 361 }
362 cc += z*W[k]; 362 cc += z*W[k];
363 nn += W[k]; 363 nn += W[k];
364 } 364 }
365 CC[i] = cc; 365 CC[i] = (typeof(*CC))cc;
366 if (NN != NULL) 366 if (NN != NULL)
367 NN[i] = nn; 367 NN[i] = (typeof(*NN))nn;
368 } 368 }
369 else /* no weights, all weights are 1 */ 369 else /* no weights, all weights are 1 */
370 #pragma omp for schedule(dynamic) nowait 370 #pragma omp for schedule(dynamic) nowait
371 for (i = 0; i < cX * cY; i++) 371 for (i = 0; i < cX * cY; i++)
372 { 372 {
384 continue; 384 continue;
385 } 385 }
386 cc += z; 386 cc += z;
387 nn++; 387 nn++;
388 } 388 }
389 CC[i] = cc; 389 CC[i] = (typeof(*CC))cc;
390 if (NN != NULL) 390 if (NN != NULL)
391 NN[i] = (double)nn; 391 NN[i] = (typeof(*NN))nn;
392 } 392 }
393 else // if (X0==Y0) && (cX==cY) 393 else // if (X0==Y0) && (cX==cY)
394 /******** X==Y, output is symetric *******/ 394 /******** X==Y, output is symetric *******/
395 if (W) /* weighted version */ 395 if (W) /* weighted version */
396 #pragma omp for schedule(dynamic) nowait 396 #pragma omp for schedule(dynamic) nowait
414 } 414 }
415 cc += z*W[k]; 415 cc += z*W[k];
416 nn += W[k]; 416 nn += W[k];
417 } 417 }
418 size_t j = jj + ii*cX; 418 size_t j = jj + ii*cX;
419 CC[i] = cc; 419 CC[i] = (typeof(*CC))cc;
420 CC[j] = cc; 420 CC[j] = (typeof(*CC))cc;
421 if (NN != NULL) { 421 if (NN != NULL) {
422 NN[i] = nn; 422 NN[i] = (typeof(*NN))nn;
423 NN[j] = nn; 423 NN[j] = (typeof(*NN))nn;
424 } 424 }
425 } 425 }
426 else /* no weights, all weights are 1 */ 426 else /* no weights, all weights are 1 */
427 #pragma omp for schedule(dynamic) nowait 427 #pragma omp for schedule(dynamic) nowait
428 for (i = 0; i < cX * cY; i++) 428 for (i = 0; i < cX * cY; i++)
445 } 445 }
446 cc += z; 446 cc += z;
447 nn++; 447 nn++;
448 } 448 }
449 size_t j = jj + ii*cX; 449 size_t j = jj + ii*cX;
450 CC[i] = cc; 450 CC[i] = (typeof(*CC))cc;
451 CC[j] = cc; 451 CC[j] = (typeof(*CC))cc;
452 if (NN != NULL) { 452 if (NN != NULL) {
453 NN[i] = (double)nn; 453 NN[i] = (typeof(*NN))nn;
454 NN[j] = (double)nn; 454 NN[j] = (typeof(*NN))nn;
455 } 455 }
456 } 456 }
457 457
458 } 458 }
459 else if (ACC_LEVEL == 3) { 459 else if (ACC_LEVEL == 3) {
498 y = z*W[k]-rn; 498 y = z*W[k]-rn;
499 t = nn+y; 499 t = nn+y;
500 rn= (t-nn)-y; 500 rn= (t-nn)-y;
501 nn= t; 501 nn= t;
502 } 502 }
503 CC[i] = cc; 503 CC[i] = (typeof(*CC))cc;
504 if (NN != NULL) 504 if (NN != NULL)
505 NN[i] = nn; 505 NN[i] = (typeof(*NN))nn;
506 } 506 }
507 else /* no weights, all weights are 1 */ 507 else /* no weights, all weights are 1 */
508 #pragma omp for schedule(dynamic) nowait 508 #pragma omp for schedule(dynamic) nowait
509 for (i = 0; i < cX * cY; i++) 509 for (i = 0; i < cX * cY; i++)
510 { 510 {
529 rc= (t-cc)-y; 529 rc= (t-cc)-y;
530 cc= t; 530 cc= t;
531 531
532 nn++; 532 nn++;
533 } 533 }
534 CC[i] = cc; 534 CC[i] = (typeof(*CC))cc;
535 if (NN != NULL) 535 if (NN != NULL)
536 NN[i] = (double)nn; 536 NN[i] = (typeof(*NN))nn;
537 } 537 }
538 else // if (X0==Y0) && (cX==cY) 538 else // if (X0==Y0) && (cX==cY)
539 /******** X==Y, output is symetric *******/ 539 /******** X==Y, output is symetric *******/
540 if (W) /* weighted version */ 540 if (W) /* weighted version */
541 #pragma omp for schedule(dynamic) nowait 541 #pragma omp for schedule(dynamic) nowait
571 t = nn+y; 571 t = nn+y;
572 rn= (t-nn)-y; 572 rn= (t-nn)-y;
573 nn= t; 573 nn= t;
574 } 574 }
575 size_t j = jj + ii*cX; 575 size_t j = jj + ii*cX;
576 CC[i] = cc; 576 CC[i] = (typeof(*CC))cc;
577 CC[j] = cc; 577 CC[j] = (typeof(*CC))cc;
578 if (NN != NULL) { 578 if (NN != NULL) {
579 NN[i] = nn; 579 NN[i] = (typeof(*NN))nn;
580 NN[j] = nn; 580 NN[j] = (typeof(*NN))nn;
581 } 581 }
582 } 582 }
583 else /* no weights, all weights are 1 */ 583 else /* no weights, all weights are 1 */
584 #pragma omp for schedule(dynamic) nowait 584 #pragma omp for schedule(dynamic) nowait
585 for (i = 0; i < cX * cY; i++) 585 for (i = 0; i < cX * cY; i++)
609 cc= t; 609 cc= t;
610 610
611 nn++; 611 nn++;
612 } 612 }
613 size_t j = jj + ii*cX; 613 size_t j = jj + ii*cX;
614 CC[i] = cc; 614 CC[i] = (typeof(*CC))cc;
615 CC[j] = cc; 615 CC[j] = (typeof(*CC))cc;
616 if (NN != NULL) { 616 if (NN != NULL) {
617 NN[i] = (double)nn; 617 NN[i] = (typeof(*NN))nn;
618 NN[j] = (double)nn; 618 NN[j] = (typeof(*NN))nn;
619 } 619 }
620 } 620 }
621 } 621 }
622 else if (ACC_LEVEL == 2) { 622 else if (ACC_LEVEL == 2) {
623 /*------ version 3 --------------------- 623 /*------ version 3 ---------------------