This is Minuit.m in view mode; [Download] [Up]
/* Minuit by Paul Kunz May 1993 * Encapsulator of Minuit Fortran * * Copyright (C) 1993 The Board of Trustees of * The Leland Stanford Junior University. All Rights Reserved. */ #import "Minuit.h" const char Minuit_h_rcsid[] = MINUIT_H_RCSID; const char Minuit_m_rcsid[] = "$Id: Minuit.m,v 1.3 1993/07/29 06:13:47 rensing Exp $"; #import "string.h" #import "minuit89.h" /* Minuit common block and function prototypes */ #import "minuitFCN.h" @implementation Minuit - init { int lunRd = 0, lunWr = 6, lunSave = 0; [super init]; mninit_(&lunRd, &lunWr, &lunSave, 0, 0, 0); return self; } - clearParms { mncler_(); return self; } - doFitWith:(FCNParms *)fcnParms { void (*fcnptr)() = fcn_; char prtCmd[] = "SET PRINTOUT"; char minCmd[] = "MINIMIZE"; double arglist[3]; int nargs = 0; int irc; /* set print level */ arglist[0] = 2.0; nargs = 1; #ifdef F2C mnexcm_( fcnptr, prtCmd, arglist, &nargs, &irc, fcnParms, strlen(prtCmd) ); #else mnexcm_(&fcnptr, prtCmd, arglist, &nargs, &irc, fcnParms, 0, strlen(prtCmd), 0, 0, 0, 0); #endif arglist[0] = 10000.0; nargs = 1; #ifdef F2C mnexcm_( fcnptr, minCmd, arglist, &nargs, &irc, fcnParms, strlen(minCmd) ); #else mnexcm_(&fcnptr, minCmd, arglist, &nargs, &irc, fcnParms, 0, strlen(minCmd), 0, 0, 0, 0); #endif return self; } - getParms:(fitParm *)parm at:(int) index { extern struct mn7err_t MN7ERR; char chnam[10]; double val, err, bnd1, bnd2; int ivarbl; #ifdef F2C mnpout_( &index, chnam, &val, &err, &bnd1, &bnd2, &ivarbl, 10 ); #else mnpout_( &index, chnam, &val, &err, &bnd1, &bnd2, &ivarbl, 0, 10, 0, 0, 0, 0, 0 ); #endif parm->value = val; parm->lower_error = val + MN7ERR.ern[index]; // MINOS errors parm->upper_error = val + MN7ERR.erp[index]; // from common block. parm->error = err; parm->upper_limit = val + err; parm->lower_limit = val - err; return self; } - setParms:(fitParm *)parm at:(int)iparm { char name[11]; double stepSize; double lower, upper; int irc; sprintf( name, "%-10.10s", parm->name ); if (parm->fixedValue) stepSize = 0.0; else stepSize = parm->step_size; if (parm->fixedLimits) { lower = parm->lower_limit; upper = parm->upper_limit; } else { lower = 0.0; upper = 0.0; } #ifdef F2C mnparm_(&iparm, name, &parm->value, &stepSize, &lower, &upper, &irc, 10 ); #else mnparm_(&iparm, name, &parm->value, &stepSize, &lower, &upper, &irc, 0, 10, 0, 0, 0, 0, 0 ); #endif return self; } - setLagrangeAt:(int)iparm { double value = 1.0; double stepSize = 0.1; double lower = 0.0, upper = 0.0; int irc; #ifdef F2C mnparm_(&iparm, "Lagr.Mult.", &value, &stepSize, &lower, &upper, &irc, 10 ); #else mnparm_(&iparm, "Lagr.Mult.", &value, &stepSize, &lower, &upper, &irc, 0, 10, 0, 0, 0, 0, 0 ); #endif return self; } @end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.