Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • Home
  • SEARCH
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 8851269
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: June 14, 20262026-06-14T13:06:51+00:00 2026-06-14T13:06:51+00:00

I am very new to C programming. I’m using C code from the book

  • 0

I am very new to C programming. I’m using C code from the book ‘Numerical Recipes in C‘ for polynomial regression, but I’m having problems implementing/compiling it.

Here’s the code that I am using. Some of the // show my attempts to change the program to C++. If I can’t get it to build under C, maybe it will work under C++?

I have added the int main() to the program in order to implement it. nrutil.h is the header file, but I don’t use it because I transferred the functions that I needed to the .ccp file(the functions matrix(), vector(), nrerror(), SQR()).

The compiler I’m using is MSVC 2010 Express.

//#include "nrutil.h"
#include <stdio.h>
//#include <iostream>
//using namespace std;

static float sqrarg;
#define SQR(a) ((sqrarg=(a)) == 0.0 ? 0.0 : sqrarg*sqrarg)
void nrerror(char error_text[]);
float *vector(long nl, long nh);
float **matrix(long nrl, long nrh, long ncl, long nch);

int fpoly(float x, float a[], int ma){
int j;
a[1]=1.0;

for(j=2; j<=ma;j++) 
    a[j]=a[j-1]*x;

return ma;
}

void lfit( float x[], float y[], float sig[], int ndat, float a[], int ia[], int ma, float **covar, float *chisq)

//Given a set of data points x[1..ndat], y[1..ndat] with individual standard deviations
//sig[1..ndat], use χ2 minimization to fit for some or all of the coefficients a[1..ma] of
//a function that depends linearly on a, y =sum(i)( ai × afunci(x)). The input array ia[1..ma]
//indicates by nonzero entries those components of a that should be fitted for, and by zero entries
//those components that should be held fixed at their input values. The program returns values
//for a[1..ma], χ2 = chisq, and the covariance matrix covar[1..ma][1..ma]. (Parameters
//held fixed will return zero covariances.)Th e user supplies a routine funcs(x,afunc,ma) that
//returns the ma basis functions evaluated at x = x in the array afunc[1..ma].

{
void gaussj(float **a, int n, float **b, int m);

int i,j,k,l,m,mfit=0;
float ym,wt,sum,sig2i,**beta, *afunc;

//vector<float> afunc(1,ma);
//matrix<float> beta(1,ma,1,1);
afunc=vector(1,ma);
beta=matrix(1,ma,1,1);

for (j=1;j<=ma;j++)
    if (ia[j]) mfit++;
if (mfit == 0) 
    nrerror("lfit: no parameters to be fitted");
for (j=1;j<=mfit;j++) {                       //Initialize the (symmetric)matrix.
    for (k=1;k<=mfit;k++) covar[j][k]=0.0;
    beta[j][1]=0.0;
}
for (i=1;i<=ndat;i++) {                       //Loop over data to accumulate coefficients of the normal equations.

fpoly(x[i], afunc ,ma);
ym=y[i];
if (mfit < ma) {                              //Subtract off dependences on known pieces of the fitting function.
    for (j=1;j<=ma;j++)                
        if (!ia[j]) ym -= a[j]*afunc[j];
}

sig2i=1.0/SQR(sig[i]);
for (j=0,l=1;l<=ma;l++) {
    if (ia[l]) {
        wt=afunc[l]*sig2i;
        for (j++,k=0,m=1;m<=l;m++)
            if (ia[m]) covar[j][++k] += wt*afunc[m];
        beta[j][1] += ym*wt;
    }
}
}
for (j=2;j<=mfit;j++)                    //Fill in above the diagonal from symmetry.
    for (k=1;k<j;k++)
        covar[k][j]=covar[j][k];
gaussj(covar,mfit,beta,1);              //Matrix solution.
for (j=0,l=1;l<=ma;l++) 
    if (ia[l]) a[l]=beta[++j][1];      //Partition solution to appropriate coefficients a Evaluate χ2 of the fit.
*chisq=0.0;
    for (i=1;i<=ndat;i++) { 
        fpoly(x[i], afunc,ma);
for (sum=0.0,j=1;j<=ma;j++) 
    sum += a[j]*afunc[j];
*chisq += SQR((y[i]-sum)/sig[i]);

}
//covsrt(covar,ma,ia,mfit);              //Sort covariance matrix to true order of fitting coefficients.
//free_vector(afunc,1,ma); 
//free_matrix(beta,1,ma,1,1);
}
//#endif // INTERPFUNCTIONS_H_INCLUDED

int main()
{

float x1[]={100.000000f,88.00000f,76.199997f,68.599998f,54.500000f,37.599998f,26.500000f,17.000000f,8.300000f,0.900000f,-7.200000f,-17.000000f,-24.900000f,-33.799999f,-42.500000f,-51.000000f,-60.500000f,-69.500000f,-75.300003f,-83.099998f,-94.099998f,-103.000000f,-110.099998f};
float y1[]={-2.876821f,-2.788704f,-2.596228f,-2.468143f,-1.898085f,-1.296223f,-0.664981f,-0.245603f,-0.280993f,-0.094657f,-0.184912f,-0.263328f,-0.181819f,-0.132037f,-0.029368f,0.134307f,0.257734f,0.305223f,0.091159f,0.063768f,-0.163334f,-0.136314f,-0.372106f};
float sig1[]={62.2940f,1.0532f};
float a1[]={1.8f,1.6f,1.7f,1.3f};
float **covar1, xa;
int ia1[]={2,3,4,2}; 
int ma=4, ndat=23;
float *chisq1;

*chisq1=0.9f;
covar1[4][4]=0.0f;

fpoly(xa,a1,ma);
lfit(x1,y1,sig1,ndat,a1,ia1,ma,covar1,chisq1);

}

When I try to compile this program, it shows me this error output:

1>------ Build started: Project: lfit, Configuration: Debug Win32 ------
1>  lfit.cpp
1>c:\users\sony\documents\visual studio 2010\projects\lfit\lfit\lfit.cpp(68): warning C4244: '=' : conversion from 'double' to 'float', possible loss of data
1>c:\users\sony\documents\visual studio 2010\projects\lfit\lfit\lfit.cpp(89): warning C4244: '+=' : conversion from 'double' to 'float', possible loss of data
1>c:\users\sony\documents\visual studio 2010\projects\lfit\lfit\lfit.cpp(110): warning C4700: uninitialized local variable 'chisq1' used
1>c:\users\sony\documents\visual studio 2010\projects\lfit\lfit\lfit.cpp(111): warning C4700: uninitialized local variable 'covar1' used
1>c:\users\sony\documents\visual studio 2010\projects\lfit\lfit\lfit.cpp(113): warning C4700: uninitialized local variable 'xa' used
1>lfit.obj : error LNK2019: unresolved external symbol "void __cdecl gaussj(float * *,int,float * *,int)" (?gaussj@@YAXPAPAMH0H@Z) referenced in function "void __cdecl lfit(float * const,float * const,float * const,int,float * const,int * const,int,float * *,float *)" (?lfit@@YAXQAM00H0QAHHPAPAMPAM@Z)
1>lfit.obj : error LNK2019: unresolved external symbol "void __cdecl nrerror(char * const)" (?nrerror@@YAXQAD@Z) referenced in function "void __cdecl lfit(float * const,float * const,float * const,int,float * const,int * const,int,float * *,float *)" (?lfit@@YAXQAM00H0QAHHPAPAMPAM@Z)
1>lfit.obj : error LNK2019: unresolved external symbol "float * * __cdecl matrix(long,long,long,long)" (?matrix@@YAPAPAMJJJJ@Z) referenced in function "void __cdecl lfit(float * const,float * const,float * const,int,float * const,int * const,int,float * *,float *)" (?lfit@@YAXQAM00H0QAHHPAPAMPAM@Z)
1>lfit.obj : error LNK2019: unresolved external symbol "float * __cdecl vector(long,long)" (?vector@@YAPAMJJ@Z) referenced in function "void __cdecl lfit(float * const,float * const,float * const,int,float * const,int * const,int,float * *,float *)" (?lfit@@YAXQAM00H0QAHHPAPAMPAM@Z)
1>C:\Users\Sony\Documents\Visual Studio 2010\Projects\lfit\Debug\lfit.exe : fatal error LNK1120: 4 unresolved externals
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-06-14T13:06:52+00:00Added an answer on June 14, 2026 at 1:06 pm

    You’ve defined a bunch of functions that aren’t implemented. For instance, early on you define this function: void nrerror(char error_text[]);, but you never actually provide an implementation for it. Make sure that inside of your project you include any other relevant .c or .cpp files that contain definitions for these things.

    Even though you may think you’re not using those functions, in fact you are! Notice a call, for instance, to this: nrerror("lfit: no parameters to be fitted");. Your code makes use of these functions, so unless you provide an implementation for them your code will not link properly.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I'm very new to Java programming language so this is probably dumb question but
I'm very new to programming & came across a program in a book i'm
Let me start off by saying, I'm not new to programming but am very
I am very new to programming and I am using Java as my first
Please be gentle, I'm very new to programming and only own one book which
I'm very very new to programming in Python, but out of necessity I had
I'm very new to programming in Android, but have been struggling all day with
i'm doing some exercises in my Java book. I'm very new to programming. Therefore,
I am very new to programming in general and am having a hard time
I'm still very new to programming and I want to write the cleanest code

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.