%%File:sbalgexp.tlc
%%Abstract:
%%Thisblockdefinesasetofarithmeticexpressionsthatareassignedto
%%theoutputvector.Theinputstothesetofequationsaretime,the
%%inputvectorandanoptionalparametervector.
%%
 
%%
%%InitialcodingbyASBozin
%%Copyright1997-2012TheMathWorks,Inc.
%%
%implements sbalgexp "C"
 
%%Function:BlockTypeSetup===================================================
%%Abstract:
%%Placeincludeandfunctionprototypeinthemodel'sheaderfile
%function BlockTypeSetup(block, system) void
  %<SLibAddToStaticSources("sbpowdi.c")>
  %assign externC = LibExternInFcnDecls()
  %if ::GenCPP
    %assign externC = "extern /"C/""
  %endif
  %openfile buffer
  #ifndef POWDI_DEFINE
  %<externC> real_T powdi(real_T x, int_T n);
  #define POWDI_DEFINE
  #endif
  %closefile buffer
  %<LibCacheFunctionPrototype(buffer)>
%endfunction
 
%%Function:Start============================================================
%%Abstract:
%%Initializeparameters
%function Start(block, system) Output
  %assign sfcnName = ParamSettings.FunctionName
  /* Algebraic Expression Block */
  /* %<Type> Block: (%<sfcnName>): %<LibParentMaskBlockName(block)> */
  {
    %assign info = SFcnParamSettings.algInfo
    %assign numParams = info[2]
    %assign iniParams = SFcnParamSettings.iniParams
    /* Assign parameters */
    %foreach idx = numParams
       %<LibBlockDWork(algParams, "", "", idx)> = %;
    %endforeach
  }
 
%endfunction
 
%%Function:Outputs==========================================================
%%Abstract:
%%
%function Outputs(block, system) Output
%<LibAddToCommonIncludes("")>
 
  %assign sfcnName = ParamSettings.FunctionName
  /* Algebraic Expression Block */
  /* %<Type> Block: (%<sfcnName>): %<LibParentMaskBlockName(block)> */
  {
    %assign info = SFcnParamSettings.algInfo
    %assign ninputs = info[0]
    %assign noutputs = info[1]
    %assign nparams = info[2]
    %assign cStatements = SFcnParamSettings.cStatements
    %assign nstatements = SIZE(SFcnParamSettings.cStatements, 1)
    %assign timeComponent = SFcnParamSettings.timeComponent
 
    %foreach idx = %<nstatements>
      %assign statement = "%"
      %assign statement = FEVAL("strrep",statement,"^",",")
      %foreach uidx = ninputs
    %assign uiToken = "@u%"
    %assign ui = LibBlockInputSignal(0,"","",ninputs-uidx-1)
    %assign statement = FEVAL("strrep",statement,uiToken,ui)
      %endforeach
      %foreach yidx = noutputs
    %assign yiToken = "@y%"
    %assign yi = LibBlockOutputSignal(0,"","",noutputs-yidx-1)
    %assign statement = FEVAL("strrep",statement,yiToken,yi)
      %endforeach
      %foreach pidx = nparams
    %assign piToken = "@p%"
    %assign pi = LibBlockDWork(algParams, "", "", nparams-pidx-1)
    %assign statement = FEVAL("strrep",statement,piToken,pi)
      %endforeach
      %if timeComponent
          %assign tiToken = "@t"
          %assign ti = LibGetT()
          %assign statement = FEVAL("strrep",statement,tiToken,ti)
      %endif
      %<statement>
    %endforeach
  }
%endfunction %% Outputs
 
%%Function:Terminate========================================================
%%Abstract:
%%
%function Terminate(block, system) Output
 
%endfunction
 
%%[EOF]sbalgexp.tlc