181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray#include <stdio.h> 281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray#include <stdlib.h> 381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray#include <string.h> 481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray#include <stdarg.h> 581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray#include "cblas.h" 681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray#include "cblas_f77.h" 781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray 881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murrayvoid cblas_xerbla(int info, const char *rout, const char *form, ...) 981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray{ 1081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray extern int RowMajorStrg; 1181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray char empty[1] = ""; 1281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray va_list argptr; 1381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray 1481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray va_start(argptr, form); 1581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray 1681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray if (RowMajorStrg) 1781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray { 1881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray if (strstr(rout,"gemm") != 0) 1981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray { 2081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray if (info == 5 ) info = 4; 2181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray else if (info == 4 ) info = 5; 2281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray else if (info == 11) info = 9; 2381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray else if (info == 9 ) info = 11; 2481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray } 2581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray else if (strstr(rout,"symm") != 0 || strstr(rout,"hemm") != 0) 2681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray { 2781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray if (info == 5 ) info = 4; 2881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray else if (info == 4 ) info = 5; 2981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray } 3081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray else if (strstr(rout,"trmm") != 0 || strstr(rout,"trsm") != 0) 3181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray { 3281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray if (info == 7 ) info = 6; 3381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray else if (info == 6 ) info = 7; 3481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray } 3581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray else if (strstr(rout,"gemv") != 0) 3681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray { 3781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray if (info == 4) info = 3; 3881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray else if (info == 3) info = 4; 3981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray } 4081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray else if (strstr(rout,"gbmv") != 0) 4181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray { 4281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray if (info == 4) info = 3; 4381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray else if (info == 3) info = 4; 4481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray else if (info == 6) info = 5; 4581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray else if (info == 5) info = 6; 4681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray } 4781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray else if (strstr(rout,"ger") != 0) 4881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray { 4981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray if (info == 3) info = 2; 5081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray else if (info == 2) info = 3; 5181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray else if (info == 8) info = 6; 5281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray else if (info == 6) info = 8; 5381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray } 5481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray else if ( (strstr(rout,"her2") != 0 || strstr(rout,"hpr2") != 0) 5581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray && strstr(rout,"her2k") == 0 ) 5681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray { 5781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray if (info == 8) info = 6; 5881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray else if (info == 6) info = 8; 5981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray } 6081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray } 6181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray if (info) 6281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray fprintf(stderr, "Parameter %d to routine %s was incorrect\n", info, rout); 6381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray vfprintf(stderr, form, argptr); 6481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray va_end(argptr); 6581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray if (info && !info) 6681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray F77_xerbla(empty, &info); /* Force link of our F77 error handler */ 6781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray exit(-1); 6881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray} 69