/* nag_fit_dim1_spline_eval (e02bbc) Example Program. * * Copyright 2025 Numerical Algorithms Group. * * Mark 31.1, 2025. * */ #include<nag.h> #include<stdio.h> intmain(void){ Integerexit_status=0,j,m,ncap,ncap7,r; Nag_Splinespline; doublea,b,s,x; NagErrorfail; INIT_FAIL(fail); /* Initialize spline */ spline.lamda=0; spline.c=0; printf("nag_fit_dim1_spline_eval (e02bbc) Example Program Results\n"); scanf("%*[^\n]");/* Skip heading in data file */ while(scanf("%"NAG_IFMT"",&m)!=EOF) { if(m<=0){ printf("Invalid m.\n"); exit_status=1; returnexit_status; } scanf("%"NAG_IFMT"",&ncap); ncap7=ncap+7; if(ncap>0){ spline.n=ncap7; if(!(spline.c=NAG_ALLOC(ncap7,double))|| !(spline.lamda=NAG_ALLOC(ncap7,double))){ printf("Allocation failure\n"); exit_status=-1; gotoEND; } }else{ printf("Invalid ncap.\n"); exit_status=1; returnexit_status; } for(j=0;j<ncap7;j++) scanf("%lf",&(spline.lamda[j])); for(j=0;j<ncap+3;j++) scanf("%lf",&(spline.c[j])); a=spline.lamda[3]; b=spline.lamda[ncap+3]; printf("Augmented set of knots stored in spline.lamda:\n"); for(j=0;j<ncap7;j++) printf("%10.4f%s",spline.lamda[j], (j%6==5||j==ncap7-1)?"\n":" "); printf("\nB-spline coefficients stored in spline.c\n\n"); for(j=0;j<ncap+3;j++) printf("%10.4f%s",spline.c[j], (j%6==5||j==ncap+2)?"\n":" "); printf("\n x Value of cubic spline\n\n"); for(r=1;r<=m;++r){ x=((double)(m-r)*a+(double)(r-1)*b)/(double)(m-1); /* nag_fit_dim1_spline_eval (e02bbc). * Evaluation of fitted cubic spline, function only */ nag_fit_dim1_spline_eval(x,&s,&spline,&fail); if(fail.code!=NE_NOERROR){ printf("Error from nag_fit_dim1_spline_eval (e02bbc).\n%s\n", fail.message); exit_status=1; gotoEND; } printf("%10.4f%15.4f\n",x,s); } NAG_FREE(spline.c); NAG_FREE(spline.lamda); } END: returnexit_status; }