void print(const ccsmatrix *A){ #ifdef OUTPUT_MATHEMATICA std::cout << "{"; for(int j = 0; j < (int)A->cols; j++){ for(int ip = A->colptr[j]; ip < A->colptr[j+1]; ip++){ int i = A->rowind[ip]; std::cout << "{" << i+1 << ", " << j+1 << "} -> "; printcomplex(A->values[ip]); std::cout << ", "; } } std::cout << "{_, _} -> 0}"; #endif #ifdef OUTPUT_MATLAB std::cout << "spconvert(["; for(int j = 0; j < (int)A->cols; j++){ for(int ip = A->colptr[j]; ip < A->colptr[j+1]; ip++){ int i = A->rowind[ip]; std::cout << i+1 << "\t" << j+1 << "\t"; printcomplex(A->values[ip]); std::cout << std::endl; } } std::cout << "])"; #endif }
void print(size_t m, size_t n, size_t lda, std::complex<double> *A){ #ifdef OUTPUT_MATLAB std::cout << "["; for(size_t i = 0; i < m; ++i){ std::cout << ""; for(size_t j = 0; j < n; ++j){ printcomplex(A[i+j*lda]); if(j != n-1){ std::cout << ", "; } } std::cout << std::endl; } std::cout << "]"; #endif #ifdef OUTPUT_MATHEMATICA std::cout << "{"; for(size_t i = 0; i < m; ++i){ std::cout << "{"; for(size_t j = 0; j < n; ++j){ printcomplex(A[i+j*lda]); if(j != n-1){ std::cout << ", "; } } std::cout << "}"; if(i != m-1){ std::cout << "," << std::endl; } } std::cout << "}"; #endif }
void print(size_t n, std::complex<double> *V){ #ifdef OUTPUT_MATHEMATICA std::cout << "{"; for(size_t i = 0; i < n; ++i){ printcomplex(V[i]); if(i != n-1){ std::cout << ", "; } } std::cout << "}"; #endif #ifdef OUTPUT_MATLAB std::cout << "["; for(size_t i = 0; i < n; ++i){ printcomplex(V[i]); if(i != n-1){ std::cout << std::endl; } } std::cout << "]"; #endif }
// Very simple printf. Only for debugging prints. // Do not add to this without checking with Rob. static void vprintf(int8 *s, byte *base) { int8 *p, *lp; uintptr arg, narg; byte *v; // lock(&debuglock); lp = p = s; arg = 0; for(; *p; p++) { if(*p != '%') continue; if(p > lp) runtime·write(2, lp, p-lp); p++; narg = 0; switch(*p) { case 't': narg = arg + 1; break; case 'd': // 32-bit case 'x': arg = runtime·rnd(arg, 4); narg = arg + 4; break; case 'D': // 64-bit case 'U': case 'X': case 'f': arg = runtime·rnd(arg, sizeof(uintptr)); narg = arg + 8; break; case 'C': arg = runtime·rnd(arg, sizeof(uintptr)); narg = arg + 16; break; case 'p': // pointer-sized case 's': arg = runtime·rnd(arg, sizeof(uintptr)); narg = arg + sizeof(uintptr); break; case 'S': // pointer-aligned but bigger arg = runtime·rnd(arg, sizeof(uintptr)); narg = arg + sizeof(String); break; case 'a': // pointer-aligned but bigger arg = runtime·rnd(arg, sizeof(uintptr)); narg = arg + sizeof(Slice); break; case 'i': // pointer-aligned but bigger case 'e': arg = runtime·rnd(arg, sizeof(uintptr)); narg = arg + sizeof(Eface); break; } v = base+arg; switch(*p) { case 'a': runtime·printslice(*(Slice*)v); break; case 'd': runtime·printint(*(int32*)v); break; case 'D': runtime·printint(*(int64*)v); break; case 'e': runtime·printeface(*(Eface*)v); break; case 'f': runtime·printfloat(*(float64*)v); break; case 'C': runtime·printcomplex(*(Complex128*)v); break; case 'i': runtime·printiface(*(Iface*)v); break; case 'p': runtime·printpointer(*(void**)v); break; case 's': runtime·prints(*(int8**)v); break; case 'S': runtime·printstring(*(String*)v); break; case 't': runtime·printbool(*(bool*)v); break; case 'U': runtime·printuint(*(uint64*)v); break; case 'x': runtime·printhex(*(uint32*)v); break; case 'X': runtime·printhex(*(uint64*)v); break; } arg = narg; lp = p+1; } if(p > lp) runtime·write(2, lp, p-lp); // unlock(&debuglock); }