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

📄 cfunc.mod

📁 ngspice又一个电子CAD仿真软件代码.功能更全
💻 MOD
字号:
/* $Id: cfunc.mod,v 1.2 2003/08/05 17:20:35 pnenzi Exp $ *//*.......1.........2.........3.........4.........5.........6.........7.........8================================================================================FILE mult/cfunc.modCopyright 1991Georgia Tech Research Corporation, Atlanta, Ga. 30332All Rights ReservedPROJECT A-8503-405               AUTHORS                          20 Mar 1991     Jeffrey P. MurrayMODIFICATIONS        2 Oct 1991    Jeffrey P. Murray                                   SUMMARY    This file contains the model-specific routines used to    functionally describe the mult code model.INTERFACES           FILE                 ROUTINE CALLED         N/A                  N/AREFERENCED FILES    Inputs from and outputs to ARGS structure.                     NON-STANDARD FEATURES    NONE===============================================================================*//*=== INCLUDE FILES ====================*/                                      /*=== CONSTANTS ========================*//*=== MACROS ===========================*/  /*=== LOCAL VARIABLES & TYPEDEFS =======*/                                        /*=== FUNCTION PROTOTYPE DEFINITIONS ===*/                   /*==============================================================================FUNCTION void cm_mult()AUTHORS                          20 Mar 1991     Jeffrey P. MurrayMODIFICATIONS        2 Oct 1991    Jeffrey P. MurraySUMMARY    This function implements the mult code model.INTERFACES           FILE                 ROUTINE CALLED         N/A                  N/ARETURNED VALUE        Returns inputs and outputs via ARGS structure.GLOBAL VARIABLES        NONENON-STANDARD FEATURES    NONE==============================================================================*//*=== CM_MULT ROUTINE ===*/                                                   void cm_mult(ARGS) {    int i;     /* generic loop counter index */	int size;  /* number of input ports */    double accumulate_gain;  /* product of all the gains */	double accumulate_in;    /* product of all (inputs + offsets) */	double final_gain;       /* output gain */    Mif_Complex_t ac_gain;    size = PORT_SIZE(in);               /* Note that port size */    final_gain = PARAM(out_gain);        /* and out_gain are read only */                                        /* once...saves access time. */    /* Calculate multiplication of inputs and gains for   */    /* all types of analyes....                           */    accumulate_gain = 1.0;    accumulate_in = 1.0;    for (i=0; i<size; i++) {        accumulate_gain = accumulate_gain *    /* Multiply all input gains */                             PARAM(in_gain[i]);         accumulate_in = accumulate_in *        /* Multiply offset input values */                           (INPUT(in[i]) + PARAM(in_offset[i]));    }    if(ANALYSIS != MIF_AC) {                /* DC & Transient */                 for (i=0; i<size; i++) {   /* Partials are product of all gains and */                                   /*   inputs divided by each individual   */                                   /*      input value.                     */            if (0.0 != accumulate_in) {  /* make sure that no division by zero                                            will occur....                      */                PARTIAL(out,in[i]) = (accumulate_in/(INPUT(in[i]) +                         PARAM(in_offset[i]))) * accumulate_gain * final_gain;            }            else {                       /* otherwise, set partial to zero.     */                PARTIAL(out,in[i]) = 0.0;            }        }        OUTPUT(out) = accumulate_in * accumulate_gain * final_gain +                                           PARAM(out_offset);    }    else {                              /* AC Analysis */         for (i=0; i<size; i++) {   /* Partials are product of all gains and */                                   /*   inputs divided by each individual   */                                   /*      input value.                     */            ac_gain.real = (accumulate_in/(INPUT(in[i]) +                     PARAM(in_offset[i]))) * accumulate_gain * final_gain;            ac_gain.imag = 0.0;            AC_GAIN(out,in[i]) = ac_gain;        }    }}

⌨️ 快捷键说明

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