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
}
Beispiel #4
0
// 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);
}