⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 func.c

📁 Calc Software Package for Number Calc
💻 C
📖 第 1 页 / 共 5 页
字号:
				result.v_type = V_NUM;				comfree(tmp);			}			break;		default:			return error_value(E_ACOT2);	}	return result;}static VALUEf_asin(int count, VALUE **vals){	VALUE result;	COMPLEX *tmp;	NUMBER *err;	NUMBER *q;	/* initialize VALUE */	result.v_subtype = V_NOSUBTYPE;	err = conf->epsilon;	if (count == 2) {		if (vals[1]->v_type != V_NUM || qiszero(vals[1]->v_num))			return error_value(E_ASIN1);		err = vals[1]->v_num;	}	switch (vals[0]->v_type) {		case V_NUM:			result.v_num = qasin(vals[0]->v_num, err);			result.v_type = V_NUM;			if (result.v_num == NULL) {				tmp = comalloc();				qfree(tmp->real);				tmp->real = qlink(vals[0]->v_num);				result.v_type = V_COM;				result.v_com = c_asin(tmp, err);				comfree(tmp);			}			break;		case V_COM:			result.v_com = c_asin(vals[0]->v_com, err);			result.v_type = V_COM;			break;		default:			return error_value(E_ASIN2);	}	if (result.v_type == V_COM && cisreal(result.v_com)) {		q = qlink(result.v_com->real);		comfree(result.v_com);		result.v_type = V_NUM;		result.v_num = q;	}	return result;}static VALUEf_acos(int count, VALUE **vals){	VALUE result;	COMPLEX *tmp;	NUMBER *err;	NUMBER *q;	/* initialize VALUE */	result.v_subtype = V_NOSUBTYPE;	err = conf->epsilon;	if (count == 2) {		if (vals[1]->v_type != V_NUM || qiszero(vals[1]->v_num))			return error_value(E_ACOS1);		err = vals[1]->v_num;	}	switch (vals[0]->v_type) {		case V_NUM:			result.v_num = qacos(vals[0]->v_num, err);			result.v_type = V_NUM;			if (result.v_num == NULL) {				tmp = comalloc();				qfree(tmp->real);				tmp->real = qlink(vals[0]->v_num);				result.v_type = V_COM;				result.v_com = c_acos(tmp, err);				comfree(tmp);			}			break;		case V_COM:			result.v_com = c_acos(vals[0]->v_com, err);			result.v_type = V_COM;			break;		default:			return error_value(E_ACOS2);	}	if (result.v_type == V_COM && cisreal(result.v_com)) {		q = qlink(result.v_com->real);		comfree(result.v_com);		result.v_type = V_NUM;		result.v_num = q;	}	return result;}static VALUEf_asec(int count, VALUE **vals){	VALUE result;	COMPLEX *tmp;	NUMBER *err;	NUMBER *q;	/* initialize VALUE */	result.v_subtype = V_NOSUBTYPE;	err = conf->epsilon;	if (count == 2) {		if (vals[1]->v_type != V_NUM || qiszero(vals[1]->v_num))			return error_value(E_ASEC1);		err = vals[1]->v_num;	}	switch (vals[0]->v_type) {		case V_NUM:			if (qiszero(vals[0]->v_num))				return error_value(E_LOGINF);			result.v_num = qasec(vals[0]->v_num, err);			result.v_type = V_NUM;			if (result.v_num == NULL) {				tmp = comalloc();				qfree(tmp->real);				tmp->real = qlink(vals[0]->v_num);				result.v_com = c_asec(tmp, err);				result.v_type = V_COM;				comfree(tmp);			}			break;		case V_COM:			result.v_com = c_asec(vals[0]->v_com, err);			result.v_type = V_COM;			break;		default:			return error_value(E_ASEC2);	}	if (result.v_type == V_COM) {		if (result.v_com == NULL)			return error_value(E_LOGINF);		if (cisreal(result.v_com)) {			q = qlink(result.v_com->real);			comfree(result.v_com);			result.v_type = V_NUM;			result.v_num = q;		}	}	return result;}static VALUEf_acsc(int count, VALUE **vals){	VALUE result;	COMPLEX *tmp;	NUMBER *err;	NUMBER *q;	/* initialize VALUE */	result.v_subtype = V_NOSUBTYPE;	err = conf->epsilon;	if (count == 2) {		if (vals[1]->v_type != V_NUM || qiszero(vals[1]->v_num))			return error_value(E_ACSC1);		err = vals[1]->v_num;	}	switch (vals[0]->v_type) {		case V_NUM:			if (qiszero(vals[0]->v_num))				return error_value(E_LOGINF);			result.v_num = qacsc(vals[0]->v_num, err);			result.v_type = V_NUM;			if (result.v_num == NULL) {				tmp = comalloc();				qfree(tmp->real);				tmp->real = qlink(vals[0]->v_num);				result.v_com = c_acsc(tmp, err);				result.v_type = V_COM;				comfree(tmp);			}			break;		case V_COM:			result.v_com = c_acsc(vals[0]->v_com, err);			result.v_type = V_COM;			break;		default:			return error_value(E_ACSC2);	}	if (result.v_type == V_COM) {		if (result.v_com == NULL)			return error_value(E_LOGINF);		if (cisreal(result.v_com)) {			q = qlink(result.v_com->real);			comfree(result.v_com);			result.v_type = V_NUM;			result.v_num = q;		}	}	return result;}static VALUEf_asinh(int count, VALUE **vals){	VALUE result;	COMPLEX *tmp;	NUMBER *err;	/* initialize VALUE */	result.v_subtype = V_NOSUBTYPE;	err = conf->epsilon;	if (count == 2) {		if (vals[1]->v_type != V_NUM || qiszero(vals[1]->v_num))			return error_value(E_ASINH1);		err = vals[1]->v_num;	}	switch (vals[0]->v_type) {		case V_NUM:			result.v_num = qasinh(vals[0]->v_num, err);			result.v_type = V_NUM;			break;		case V_COM:			tmp = c_asinh(vals[0]->v_com, err);			result.v_type = V_COM;			result.v_com = tmp;			if (cisreal(tmp)) {				result.v_num = qlink(tmp->real);				result.v_type = V_NUM;				comfree(tmp);			}			break;		default:			return error_value(E_ASINH2);	}	return result;}static VALUEf_acosh(int count, VALUE **vals){	VALUE result;	COMPLEX *tmp;	NUMBER *err;	NUMBER *q;	/* initialize VALUE */	result.v_subtype = V_NOSUBTYPE;	err = conf->epsilon;	if (count == 2) {		if (vals[1]->v_type != V_NUM || qiszero(vals[1]->v_num))			return error_value(E_ACOSH1);		err = vals[1]->v_num;	}	switch (vals[0]->v_type) {		case V_NUM:			result.v_num = qacosh(vals[0]->v_num, err);			result.v_type = V_NUM;			if (result.v_num == NULL) {				tmp = comalloc();				qfree(tmp->real);				tmp->real = qlink(vals[0]->v_num);				result.v_com = c_acosh(tmp, err);				result.v_type = V_COM;				comfree(tmp);			}			break;		case V_COM:			result.v_com = c_acosh(vals[0]->v_com, err);			result.v_type = V_COM;			break;		default:			return error_value(E_ACOSH2);	}	if (result.v_type == V_COM && cisreal(result.v_com)) {		q = qlink(result.v_com->real);		comfree(result.v_com);		result.v_type = V_NUM;		result.v_num = q;	}	return result;}static VALUEf_atanh(int count, VALUE **vals){	VALUE result;	COMPLEX *tmp;	NUMBER *err;	NUMBER *q;	/* initialize VALUE */	result.v_subtype = V_NOSUBTYPE;	err = conf->epsilon;	if (count == 2) {		if (vals[1]->v_type != V_NUM || qiszero(vals[1]->v_num))			return error_value(E_ATANH1);		err = vals[1]->v_num;	}	switch (vals[0]->v_type) {		case V_NUM:			result.v_num = qatanh(vals[0]->v_num, err);			result.v_type = V_NUM;			if (result.v_num == NULL) {				tmp = comalloc();				qfree(tmp->real);				tmp->real = qlink(vals[0]->v_num);				result.v_com = c_atanh(tmp, err);				result.v_type = V_COM;				comfree(tmp);			}			break;		case V_COM:			result.v_com = c_atanh(vals[0]->v_com, err);			result.v_type = V_COM;			break;		default:			return error_value(E_ATANH2);	}	if (result.v_type == V_COM) {		if (result.v_com == NULL)			return error_value(E_LOGINF);		if (cisreal(result.v_com)) {			q = qlink(result.v_com->real);			comfree(result.v_com);			result.v_type = V_NUM;			result.v_num = q;		}	}	return result;}static VALUEf_acoth(int count, VALUE **vals){	VALUE result;	COMPLEX *tmp;	NUMBER *err;	NUMBER *q;	/* initialize VALUE */	result.v_subtype = V_NOSUBTYPE;	err = conf->epsilon;	if (count == 2) {		if (vals[1]->v_type != V_NUM || qiszero(vals[1]->v_num))			return error_value(E_ACOTH1);		err = vals[1]->v_num;	}	switch (vals[0]->v_type) {		case V_NUM:			result.v_num = qacoth(vals[0]->v_num, err);			result.v_type = V_NUM;			if (result.v_num == NULL) {				tmp = comalloc();				qfree(tmp->real);				tmp->real = qlink(vals[0]->v_num);				result.v_com = c_acoth(tmp, err);				result.v_type = V_COM;				comfree(tmp);			}			break;		case V_COM:			result.v_com = c_acoth(vals[0]->v_com, err);			result.v_type = V_COM;			break;		default:			return error_value(E_ACOTH2);	}	if (result.v_type == V_COM) {		if (result.v_com == NULL)			return error_value(E_LOGINF);		if (cisreal(result.v_com)) {			q = qlink(result.v_com->real);			comfree(result.v_com);			result.v_type = V_NUM;			result.v_num = q;		}	}	return result;}static VALUEf_asech(int count, VALUE **vals){	VALUE result;	COMPLEX *tmp;	NUMBER *err;	NUMBER *q;	/* initialize VALUE */	result.v_subtype = V_NOSUBTYPE;	err = conf->epsilon;	if (count == 2) {		if (vals[1]->v_type != V_NUM || qiszero(vals[1]->v_num))			return error_value(E_SECH1);		err = vals[1]->v_num;	}	switch (vals[0]->v_type) {		case V_NUM:			if (qiszero(vals[0]->v_num))				return error_value(E_LOGINF);			result.v_num = qasech(vals[0]->v_num, err);			result.v_type = V_NUM;			if (result.v_num == NULL) {				tmp = comalloc();				qfree(tmp->real);				tmp->real = qlink(vals[0]->v_num);				result.v_com = c_asech(tmp, err);				result.v_type = V_COM;				comfree(tmp);			}			break;		case V_COM:			result.v_com = c_asech(vals[0]->v_com, err);			result.v_type = V_COM;			break;		default:			return error_value(E_ASECH2);	}	if (result.v_type == V_COM) {		if (result.v_com == NULL)			return error_value(E_LOGINF);		if (cisreal(result.v_com)) {			q = qlink(result.v_com->real);			comfree(result.v_com);			result.v_type = V_NUM;			result.v_num = q;		}	}	return result;}static VALUEf_acsch(int count, VALUE **vals){	VALUE result;	COMPLEX *tmp;	NUMBER *err;	NUMBER *q;	/* initialize VALUE */	result.v_subtype = V_NOSUBTYPE;	err = conf->epsilon;	if (count == 2) {		if (vals[1]->v_type != V_NUM || qiszero(vals[1]->v_num))			return error_value(E_ACSCH1);		err = vals[1]->v_num;	}	switch (vals[0]->v_type) {		case V_NUM:			if (qiszero(vals[0]->v_num))				return error_value(E_LOGINF);			result.v_num = qacsch(vals[0]->v_num, err);			result.v_type = V_NUM;			if (result.v_num == NULL) {				tmp = comalloc();				qfree(tmp->real);				tmp->real = qlink(vals[0]->v_num);				result.v_com = c_acsch(tmp, err);				result.v_type = V_COM;				comfree(tmp);			}			break;		case V_COM:			result.v_com = c_acsch(vals[0]->v_com, err);			result.v_type = V_COM;			break;		default:			return error_value(E_ACSCH2);	}	if (result.v_type == V_COM) {		if (result.v_com == NULL)			return error_value(E_LOGINF);		if (cisreal(result.v_com)) {			q = qlink(result.v_com->real);			comfree(result.v_com);			result.v_type = V_NUM;			result.v_num = q;		}	}	return result;}static VALUEf_gd(int count, VALUE **vals){	VALUE result;	NUMBER *eps;	NUMBER *q;	COMPLEX *tmp;	/* initialize VALUE */	result.v_subtype = V_NOSUBTYPE;	eps = conf->epsilon;	if (count == 2) {		if (vals[1]->v_type != V_NUM || qiszero(vals[1]->v_num))			return error_value(E_GD1);		eps = vals[1]->v_num;	}	result.v_type = V_COM;	switch (vals[0]->v_type) {		case V_NUM:			if (qiszero(vals[0]->v_num)) {				result.v_type = V_NUM;				result.v_num = qlink(&_qzero_);				return result;			}			tmp = comalloc();			qfree(tmp->real);			tmp->real = qlink(vals[0]->v_num);			result.v_com = c_gd(tmp, eps);			comfree(tmp);			break;		case V_COM:			result.v_com = c_gd(vals[0]->v_com, eps);			break;		default:			return error_value(E_GD2);	}	if (result.v_com == NULL)		return error_value(E_GD3);	if (cisreal(result.v_com)) {		q = qlink(result.v_com->real);		comfree(result.v_com);		result.v_num = q;		result.v_type = V_NUM;	}	return result;}static VALUEf_agd(int count, VALUE **vals){	VALUE result;	NUMBER *eps;	NUMBER *q;	COMPLEX *tmp;	/* initialize VALUE */	result.v_subtype = V_NOSUBTYPE;	eps = conf->epsilon;	if (count == 2) {		if (vals[1]->v_type != V_NUM || qiszero(vals[1]->v_num))			return error_value(E_AGD1);		eps = vals[1]->v_num;	}	result.v_type = V_COM;	switch (vals[0]->v_type) {		case V_NUM:			if (qiszero(vals[0]->v_num)) {				result.v_type = V_NUM;				result.v_num = qlink(&_qzero_);				return result;			}			tmp = comalloc();			qfree(tmp->real);			tmp->real = qlink(vals[0]->v_num);			result.v_com = c_agd(tmp, eps);			comfree(tmp);			break;		case V_COM:			result.v_com = c_agd(vals[0]->v_com, eps);			break;		default:			return error_value(E_AGD2);	}	if (result.v_com == NULL)			return error_value(E_AGD3);	if (cisreal(result.v_com)) {		q = qlink(result.v_com->real);		comfree(result.v_com);		result.v_num = q;		result.v_type = V_NUM;	}	return result;}static VALUEf_comb(VALUE *v1, VALUE *v2){	long n;	VALUE result;	VALUE tmp1, tmp2, div;	if (v2->v_type != V_NUM || qisfrac(v2->v_num))		return error_value(E_COMB1);	result.v_subtype = V_NOSUBTYPE;	result.v_type = V_NUM;	if (qisneg(v2->v_num)) {		result.v_num = qlink(&_qzero_);		return result;	}	if (qiszero(v2->v_num)) {		result.v_num = qlink(&_qone_);		return result;	}	if (qisone(v2->v_num)) {		copyvalue(v1, &result);		return result;	}	if (v1->v_type == V_NUM) {		result.v_num = qcomb(v1->v_num, v2->v_num);		if (result.v_num == NULL)			return error_value(E_COMB2);		return result;	}	if (zge24b(v2->v_num->num))		return error_value(E_COMB2);	n = qtoi(v2->v_num);	copyvalue(v1, &result);	decvalue(v1, &tmp1);	div.v_type = V_NUM;	div.v_num = qlink(&_qtwo_);	n--;	for (;;) {		mulvalue(&result, &tmp1, &tmp2);		freevalue(&result);		divvalue(&tmp2, &div, &result);		freevalue(&tmp2);		if (--n == 0 || !testvalue(&result) || result.v_type < 0) {			freevalue(&tmp1);			freevalue(&div);			return result;		}		decvalue(&tmp1, &tmp2);		freevalue(&tmp1);		tmp1 = tmp2;		incvalue(&div, &tmp2);		freevalue(&div);		div = tmp2;	}}static VALUEf_bern(VALUE *vp){	VALUE res;	if (vp->v_type != V_NUM || qisfrac(vp->v_num))		return error_value(E_BERN);	res.v_subtype = V_NOSUBTYPE;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -