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

📄 bernoull.c

📁 spice中支持多层次元件模型仿真的可单独运行的插件源码
💻 C
字号:
/**********Copyright 1991 Regents of the University of California.  All rights reserved.Author:	1987 Kartikeya Mayaram, U. C. Berkeley CAD Group**********/#include <math.h>#include "nummacs.h"#include "accuracy.h"/* * this function computes the bernoulli function  * f(x) = x / ( exp (x) - 1 ) and its derivatives. the function * f(-x) alongwith its derivative is also computed. *//* * input    delta-psi  * outputs  f(x), df(x)/dx, f(-x), and df(-x)/dx */bernoulli (x, pfx, pDfxDx, pfMx, pDfMxDx, derivAlso)double x, *pfx, *pDfxDx, *pfMx, *pDfMxDx;BOOLEAN derivAlso;{    double fx, fMx;     double dFxDx = 0.0;     double dFMxDx = 0.0;    double expX, temp;    if( x <= -BMax ) {	fx = -x;	if( x <= -ExpLim ) {	    fMx = 0.0;	    if( derivAlso ) {		dFxDx = -1.0;		dFMxDx = 0.0;	    }	}	else {	    expX = exp( x );	    fMx = -x * expX;	    if( derivAlso ) {		dFxDx = fMx - 1.0;		dFMxDx = -expX * ( 1.0 + x );	    }	}    }    else if ( ABS( x) <= BMin ) {	fx = 1.0 / (1.0 + 0.5 * x );	fMx = 1.0 / (1.0 - 0.5 * x );	if( derivAlso ) {	    temp = 1.0 + x;	    dFxDx = -(0.5 + x / 3.0) / temp;	    dFMxDx = (0.5 + 2 * x /3.0 )/ temp;	}    }    else if ( x >= BMax ) {	fMx = x;	if( x >= ExpLim ) {	    fx = 0.0;	    if( derivAlso ) {		dFxDx = 0.0;		dFMxDx = 1.0;	    }	}	else {	    expX = exp( -x );	    fx = x * expX;	    if( derivAlso ) {		dFxDx = expX * ( 1.0 - x );		dFMxDx = 1.0 - fx;	    }	}    }    else {	expX = exp( x );	temp = 1.0 / ( expX - 1.0 );	fx = x * temp;	fMx = expX * fx;	if( derivAlso ) {	    dFxDx = temp * ( 1.0 - fMx );	    dFMxDx = temp * ( expX - fMx );	}    }    *pfx = fx;    *pfMx = fMx;    *pDfxDx = dFxDx;    *pDfMxDx = dFMxDx;}

⌨️ 快捷键说明

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