﻿id	summary	reporter	owner	description	type	status	priority	milestone	component	version	severity	resolution	keywords	cc
57	Check syntax errors blocks TOLBase	César Pérez Álvarez	danirus	"When you check syntax errors in this piece of code:
-----------------------------------------------------------------------------------------
//////////////////////////////////////////////////////////////////////////////
// FILE   : funmultdist.tol
// PURPOSE: Funciones de distribucion multivariante y variables aleatorias
//          escalares y multivariantes
//////////////////////////////////////////////////////////////////////////////

//////////////////////////////////////////////////////////////////////////////
Real ScalarNormalConditional(Real nu, Real sigma, Real limInf, Real limSup)
//////////////////////////////////////////////////////////////////////////////
{
  If(GT(limInf, limSup), ?,
  {
    Real min = 
     If(LE(limInf, -TheMaxAbsValue), 0, DistNormal(limInf, nu, sigma));
    Real max =  
     If(GE(limSup,  TheMaxAbsValue), 1, DistNormal(limSup, nu, sigma));
    Real u   = Rand(min, max);
//Real Msg(""ScalarNormalConditional"", ""min -> ""<<min);
//Real Msg(""ScalarNormalConditional"", ""max -> ""<<max);
 
    Real var = DistNormalInv(u, nu, sigma);
    Case
    (
      GT(var,  TheMaxAbsValue),  TheMaxAbsValue,
      LT(var, -TheMaxAbsValue), -TheMaxAbsValue,
      1, var
    )  
  })
};
//////////////////////////////////////////////////////////////////////////////
PutDescription(""Generacion de una variable alaeatoria normal truncada con 
media nu y varianza sigma y limites (limInf, limSup)"",
ScalarNormalConditional);
//////////////////////////////////////////////////////////////////////////////

//////////////////////////////////////////////////////////////////////////////
Matrix MultNormalConditionalMode
(
  Matrix Nu, 
  Matrix Cov, 
  Matrix LimInf, 
  Matrix LimSup,
  Real mode      //0 Sin limite, //1 LimInf, //2 LimSup, //3 LimInf y LimSup
)
//////////////////////////////////////////////////////////////////////////////
{
//Real Msg(""MultNormalConditionalMode"", ""mode ->""<<mode);
  Case
  (
    EQ(mode, 0), MultNormal(Nu, Cov),
    EQ(mode, 1), MultNormalConditionalInf(Nu, Cov, LimInf),
    EQ(mode, 2), MultNormalConditionalSup(Nu, Cov, LimSup),
    EQ(mode, 3), MultNormalConditional(Nu, Cov, LimInf, LimSup),
    And(NE(mode, 0),NE(mode, 1),NE(mode, 2),NE(mode, 3)),MultNormal(Nu, Cov))
  ) 
};
-------------------------------------------------------------------------------------------
the application is blocked.
However , if we put /**/ between the first function declaration the syntax error 
appears like:
-------------------------------------------------------------------------------------------
 ""Símbolo de cierre ) fuera de lugar en el carácter 3, línea 56:

Línea de código 
  47 : {
  48 : //Real Msg(""MultNormalConditionalMode"", ""mode ->""<<mode);
  49 :   Case
  50 :   (
  51 :     EQ(mode, 0), MultNormal(Nu, Cov),
  52 :     EQ(mode, 1), MultNormalConditionalInf(Nu, Cov, LimInf),
  53 :     EQ(mode, 2), MultNormalConditionalSup(Nu, Cov, LimSup),
  54 :     EQ(mode, 3), MultNormalConditional(Nu, Cov, LimInf, LimSup),
  55 :     And(NE(mode, 0),NE(mode, 1),NE(mode, 2),NE(mode, 3)),MultNormal(Nu, 
Cov))
  56 >   ) 
         ^
  57 : };
  58 : 
  59 : 
""
-------------------------------------------------------------------------------------------
I think that the problem is in the first case declaration, but I don't know why."	defect	closed	high		Kernel	head	minor	fixed		
