/****************************************************************************
**
*A calculate_jacobi.c ANUPQ source Eamonn O'Brien
**
*Y Copyright 1995-2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany
*Y Copyright 1995-2001, School of Mathematical Sciences, ANU, Australia
**
*/
#include "pq_defs.h"
#include "pcp_vars.h"
#include "constants.h"
/* calculate an individual jacobi */
void calculate_jacobi(struct pcp_vars *pcp)
{
register int *y = y_address;
Logical invalid = FALSE ;
int bound = pcp->ccbeg;
int output;
int a, b, c;
#include "access.h"
printf("Input the three components for the consistency calculation: " );
read_value(FALSE , "" , &c, 1);
read_value(FALSE , "" , &b, 1);
read_value(TRUE , "" , &a, 1);
/* check the validity of the components */
invalid =
outside(a, bound) || outside(b, bound) || outside(c, bound) ||
pcp->cc <= 2 || c < b || b < a ||
(a != b && b != c &&
WT(y[pcp->structure + c]) + WT(y[pcp->structure + b]) +
WT(y[pcp->structure + a]) >
pcp->cc) ||
((a == b || b == c) &&
WT(y[pcp->structure + a]) + WT(y[pcp->structure + c]) + 1 > pcp->cc);
/* if valid, calculate the jacobi */
if (!invalid) {
output = pcp->fullop;
pcp->fullop = TRUE ;
jacobi(c, b, a, 0, pcp);
pcp->fullop = output;
} else {
PRINT("Incorrect values %d, %d, %d for Jacobi calculation\n" , c, b, a);
pcp->redgen = 0;
}
}
/* check if x lies outside permitted range from 1 to y */
int outside(int x, int y)
{
return (x <= 0) || (x > y);
}
Messung V0.5 C=91 H=100 G=95
¤ Dauer der Verarbeitung: 0.11 Sekunden
(vorverarbeitet)
¤
*© Formatika GbR, Deutschland