Ir para conteúdo
Fórum Script Brasil
  • 0

C#


Fernandinha

Pergunta

Olá pessoal,

Coloquei o código abaixo em um protótipo em C#, porém o form design desaparece assim que eu insiro esse código.

Gostaria de saber se há alguma coisa de errado com o código.

Segue o mesmo abaixo:

double InterpolFlatFwdVol(vector<double> vol_days, vector<double> vols,double day, int Number_of_days)
{
//output is vol for day

int BiS_low_days;
double days_high;
double days_low;
double DF_high;
double DF_low;
double VAR_low;
double VAR_high;
double rate_low;
double rate_high;
double interpol_flat_fwd_vol;
int cont;

Number_of_days=Number_of_days-1;
BiS_low_days = BiSearch(vol_days, day, Number_of_days);

if (BiSearch(vol_days, day, Number_of_days) == -1)
{
   
    interpol_flat_fwd_vol = vols[0];   
    return interpol_flat_fwd_vol;
}        
if (BiSearch(vol_days, day, Number_of_days) != -1)
{
  if (BiSearch(vol_days, day, Number_of_days) == -2)
    {
    VAR_low = vols[Number_of_days - 1] * vols[Number_of_days - 1];
    VAR_high = vols[Number_of_days] * vols[Number_of_days];
    days_low = vol_days[Number_of_days - 1];
    days_high = vol_days[Number_of_days];
    interpol_flat_fwd_vol = sqrt((VAR_high * days_high - VAR_low * days_low) / (days_high - days_low));
  
    return interpol_flat_fwd_vol;
    }
  if (BiSearch(vol_days, day, Number_of_days) != -2)
    {
    days_low = vol_days[BiS_low_days];
    VAR_low = vols[BiS_low_days] * vols[BiS_low_days];
    days_high = vol_days[BiS_low_days + 1];
    VAR_high = vols[BiS_low_days + 1] * vols[BiS_low_days + 1];
    }
}
interpol_flat_fwd_vol = sqrt((VAR_low * days_low + (VAR_high * days_high - VAR_low * days_low) * (day - days_low) / (days_high - days_low)) / day);

return interpol_flat_fwd_vol;
}

int BiSearch(vector <double> inArray,double inValue,int sizeArray)
{
    int i;
    int low;
    int high;
    int BiSearch;
    if(inValue<inArray[0]){return -1;}
    if(inValue==inArray[0]){return -1;}
    if(inValue>inArray[sizeArray]){return -2;}
    if(inValue==inArray[sizeArray]){return sizeArray;}
    low=0;
    high=sizeArray;
    while((high-low)>1)
    {
                       i=(int)(high+low)/2;
                       if (inValue==inArray[i]){BiSearch=i;}
                       if (inValue>=inArray[i])
                           low=i;
                       else 
                           high=i;                                                            
    }
    BiSearch=low;
    return BiSearch; 
}

No aguardo de uma ajuda.

Obrigada,

Fernanda Giannetti

Editado por quintelab
Adicionado BBCode Code
Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Oi, Fernandinha.

Você pode substituir o seu código pelo de baixo. Contudo, é necessário que você verifique eventuais erros. Apenas converti. ;)

public class Nome_da_sua_classe
    {
        public double InterpolFlatFwdVol(List<double> vol_days, List<double> vols, double day, int Number_of_days)
        {
            //output is vol for day

            int BiS_low_days;
            double days_high;
            double days_low;
            double DF_high;
            double DF_low;
            double VAR_low;
            double VAR_high;
            double rate_low;
            double rate_high;
            double interpol_flat_fwd_vol;
            int cont;

            Number_of_days = Number_of_days - 1;
            BiS_low_days = BiSearch(vol_days, day, Number_of_days);

            if (BiSearch(vol_days, day, Number_of_days) == -1)
            {

                interpol_flat_fwd_vol = vols[0];
                return interpol_flat_fwd_vol;
            }
            if (BiSearch(vol_days, day, Number_of_days) != -1)
            {
                if (BiSearch(vol_days, day, Number_of_days) == -2)
                {
                    VAR_low = vols[Number_of_days - 1] * vols[Number_of_days - 1];
                    VAR_high = vols[Number_of_days] * vols[Number_of_days];
                    days_low = vol_days[Number_of_days - 1];
                    days_high = vol_days[Number_of_days];
                    interpol_flat_fwd_vol = Math.Sqrt((VAR_high * days_high - VAR_low * days_low) / (days_high - days_low));

                    return interpol_flat_fwd_vol;
                }
                if (BiSearch(vol_days, day, Number_of_days) != -2)
                {
                    days_low = vol_days[BiS_low_days];
                    VAR_low = vols[BiS_low_days] * vols[BiS_low_days];
                    days_high = vol_days[BiS_low_days + 1];
                    VAR_high = vols[BiS_low_days + 1] * vols[BiS_low_days + 1];
                }
            }
            interpol_flat_fwd_vol = Math.Sqrt((VAR_low * days_low + (VAR_high * days_high - VAR_low * days_low) * (day - days_low) / (days_high - days_low)) / day);

            return interpol_flat_fwd_vol;
        }

        public int BiSearch(List<double> inArray, double inValue, int sizeArray)
        {
            int i;
            int low;
            int high;
            int BiSearch;
            if (inValue < inArray[0]) { return -1; }
            if (inValue == inArray[0]) { return -1; }
            if (inValue > inArray[sizeArray]) { return -2; }
            if (inValue == inArray[sizeArray]) { return sizeArray; }
            low = 0;
            high = sizeArray;
            while ((high - low) > 1)
            {
                i = (int)(high + low) / 2;
                if (inValue == inArray[i]) { BiSearch = i; }
                if (inValue >= inArray[i])
                    low = i;
                else
                    high = i;
            }
            BiSearch = low;
            return BiSearch;
        }
    }

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...