Exemplo n.º 1
0
vprut1 (matrix A)
{
int n, i, j, m, lf;
real er, x;
	n = DIM(A,0);

	MATRIX (VP, MAX, n, 1)
	MATRIX (L, MAX*MAX, n, n)
	MATRIX (R, MAX*MAX, n, n)

	m = 0;
	for (i=0; i<n; i++) VAL1(VP,i) = 0;
	er = 1;
	lf = 1;
	while ((m < 50) && /* (er > 0.5) */ lf )
	{
		lr (A, L, R);
		printf ("L : "); print_matrix (L);
		printf ("R : "); print_matrix (R);
		prod_matrix (L, R, A);
		printf ("LR: "); print_matrix (A);
		prod_matrix (R, L, A);
		printf ("A : "); print_matrix (A);
		gets (buf);
		er = 0;
		m++;
		for (i=0; i<n; i++)
		for (j=0; j<n; j++)
		{
			if (j < i)
			{
				x = fabs (VAL2(A,i,j));
				if (x > er)
					er = x;
			}
		}
		lf = 0;
		for (i=0; i<n; i++)
		{
			if (fabs(VAL2(A,i,i)-VAL1(VP,i)) > 1e-4)
				lf = 1;
		}
		for (i=0; i<n; i++)
			VAL1(VP,i) = VAL2(A,i,i);
	}
	if (m == 50)
		printf ("Non convergence\n");
	else
	{
		print_matrix (A);
	}

	ENDMAT ENDMAT ENDMAT
}
Exemplo n.º 2
0
vprut (matrix A1, matrix VP)
{
int n, i, status;
	n = DIM(A1,0);
	MATRIX(A,MAX*MAX,n,n);
	status = vprut1 (A);
	for (i=0; i<n; i++)
		VAL1(VP,i) = VAL2(A,i,i);
	return status;
	ENDMAT
}
Exemplo n.º 3
0
void FORTE_FB_HYST_3::alg_REQ(void){
  CIEC_REAL X;

X = HYS()*0.5f;

if((IN() < VAL1()-X)){
	Q1() = true;
}
else
  if((IN() > VAL1() + X)){
	Q1() = false;
};

if((IN() < VAL2()-X)){
	Q2() = false;
}
else
  if((IN() > VAL2()+X)){
	Q2() = true;
};
}
Exemplo n.º 4
0
pivot (matrix A1, matrix B)
{
int n, i, j, k;
real p, q;

	n = DIM (A1, 0);

	MATRIX (A, MAX*MAX, n, n);
	copy_matrix (A1, A);

	for (i=0; i<n; i++)
	for (j=0; j<n; j++)
	{
		VAL2 (B, i, j) = i == j;
	}
	trace_matrix ("B initiale", B);

	for (i=0; i<n; i++)
	{
		p = VAL2 (A, i, i);
		/* ajouter traitement cas p = 0 */
		/* on divise la 1ere ligne par le pivot */
		for (j=0; j<n; j++)
		{
			VAL2 (A, i, j) /= p;
			VAL2 (B, i, j) /= p;
		}
		trace_matrix ("A", A);
		trace_matrix ("B", B);

		for (k=0; k<n; k++)
		if (k != i)
		{
			q = VAL2 (A, k, i);
			for (j=0; j<n; j++)
			{
				VAL2 (A, k, j) -= q * VAL2 (A, i, j);
				VAL2 (B, k, j) -= q * VAL2 (B, i, j);
			}
		}
		trace_matrix ("A", A);
		trace_matrix ("B", B);
	}
	ENDMAT
}
Exemplo n.º 5
0
GForce::~GForce() {

	// Rewrite the prefs to disk...
	mPrefs.SetPref( VAL('S','S','v','r'), mScrnSaverDelay / 60.0 );
	mPrefs.SetPref( VAL('T','r','H','i'), mTransitionHi );
	mPrefs.SetPref( VAL('T','r','L','o'), mTransitionLo );
	mPrefs.SetPref( VAL('M','S','c','l'), mMagScale * 1000 );
	mPrefs.SetPref( VAL('C','I','n','t'), mColorIntervalStr );
	mPrefs.SetPref( VAL('W','I','n','t'), mShapeIntervalStr );
	mPrefs.SetPref( VAL('D','I','n','t'), mFieldIntervalStr );
	mPrefs.SetPref( VAL('S','t','p','s'), mNum_S_Steps );
	mPrefs.SetPref( VAL('P','D','u','r'), mParticleDuration );
	mPrefs.SetPref( VAL('P','P','r','b'), mParticleProbability );
	mPrefs.SetPref( VAL('N','o','B','o'), mBorderlessWind );
	mPrefs.SetPref( VAL('K','y','b','d'), mHandleKeys	);
	mPrefs.SetPref( VAL('F','S','_','X'), mFullscreenSize.h );
	mPrefs.SetPref( VAL('F','S','_','Y'), mFullscreenSize.v );
	mPrefs.SetPref( VAL('F','S','_','D'), mFullscreenDepth );
	mPrefs.SetPref( VAL('F','S','_','#'), mFullscreenDevice );
	mPrefs.SetPref( VAL('N','o','r','m'), mNormalizeInput );
	mPrefs.SetPref( VAL('M','a','x','Y'), mMaxSize.v );
	mPrefs.SetPref( VAL('M','a','x','X'), mMaxSize.h );
	mPrefs.SetPref( VAL('T','P','o','s'), mTrackTextPosMode );
	mPrefs.SetPref( VAL('T','S','z','e'), mTrackTextSize );
	mPrefs.SetPref( VAL('T','F','n','t'), mTrackFont );
	mPrefs.SetPref( VAL('T','S','t','r'), mTrackMetaText );
	mPrefs.SetPref( VAL2('T','?'), mTrackTextStartStr );
	mPrefs.SetPref( VAL('T','D','u','r'), mTrackTextDurationStr );
	mPrefs.SetPref( VAL('K','M','a','p'), mKeyMap );
	mPrefs.SetPref( VAL('P','_','O','n'), mParticlesOn ? 1 : 0 );
	mPrefs.SetPref( VAL('S','h','w','T'), mNewConfigNotify ? 1 : 0 );
	mPrefs.SetPref( VAL('C','D','u','r'), mConsoleDelay );
	mPrefs.SetPref( VAL('C','L','i','n'), mConsoleLineDur );

	// Init the track text info
	NewSong();

	mPrefs.Store();

}
Exemplo n.º 6
0
int lr (matrix A, matrix L, matrix R)
{
int i, j, k, n;
real tr, tl;

	n = DIM(A,0);

	init_matrix (L, 0.0);
	init_matrix (R, 0.0);

	for (i=0; i<n; i++)
		VAL2(L,i,i) = 1;
	for (j=0; j<n; j++)
		VAL2(R,0,j) = VAL2(A,0,j);
	for (i=1; i<n; i++)
		VAL2(L,i,0) = VAL2(A,i,0) / VAL2(A,0,0);

	for (k=1; k<n; k++)
	{
		for (j=k; j<n; j++)
		{
			tr = 0;
			for (i=0; i<k; i++)
				tr += VAL2(R,i,j) * VAL2(L,k,i);
			VAL2(R,k,j) = VAL2(A,k,j) - tr;
		}
		if (k != n)
		{
			for (i=k+1; i<n; i++)
			{
				tl = 0;
				for (j=0; j<k; j++)
					tl += VAL2(L,i,j) * VAL2(R,j,k);
				VAL2(L,i,k) = (VAL2(A,i,k)-tl) / VAL2(R,k,k);
			}
		}
	}
}
Exemplo n.º 7
0
GForce::GForce( void* inRefCon ) :
#if defined(UNIX_X)
	mPrefs( ".G-Force", true ),
#endif
	mConsoleLines( cDuplicatesAllowed, cOrderImportant ),
	mLineExpireTimes( cOrderImportant ),
	mPal1( mT, mIntensityParam ),
	mPal2( mT, mIntensityParam ),
	mDeltaFields	( cNoDuplicates_CaseInsensitive, cSortLowToHigh ),
	mColorMaps		( cNoDuplicates_CaseInsensitive, cSortLowToHigh ),
	mWaveShapes		( cNoDuplicates_CaseInsensitive, cSortLowToHigh ),
	mParticles		( cNoDuplicates_CaseInsensitive, cSortLowToHigh ),
	mWave1( mT ),
	mWave2( mT )
{
	// Do initting...
	mWind				= 0;
	mOutPort			= 0;
	mRefCon				= inRefCon;
	mFrameCount			= 0;
	mT_MS_Base			= EgOSUtils::CurTimeMS();
	mConsoleExpireTime	=
	mLastCursorUpdate	=
	mLastGetKeys		=
	mT_MS				= 0;
	mFrameCountStart	=
	mNextPaletteUpdate	=
	mT					= 0;
	mNextShapeChange	= mT + 10;
	mNextFieldChange	= mT + 10;
	mNextColorChange	= mT + 10;
	mLastSongStart		= mT - 10000;
	mLastKeyPollTime	= mT;
	mLastActiveTime		= mT;
	mDoingSetPortWin	= false;
	mNeedsPaneErased	= true;
	mShapeSlideShow		=
	mColorSlideShow		=
	mFieldSlideShow		= true;
	mAtFullScreen		= false;
	mMouseWillAwaken	= false;
	mTrackTextDur		= 0;

	mPrefs.Load();
	if ( mPrefs.GetPref( VAL('V','e','r','s') ) != GFORCE_COMPAT_VERSION ) {
		mConsoleDelay		= 8;
		mConsoleLineDur		= 14;
		mMagScale 			= 1;
		mTransitionLo		= 4;
		mTransitionHi		= 18;
		mScrnSaverDelay		= -1 * 60;			// Factory: screen saver mode disabled
		mPrefs.SetPref( VAL('V','e','r','s'), GFORCE_COMPAT_VERSION );
		mBorderlessWind		= 0;
		mHandleKeys			= 1;
		mNum_S_Steps 		= 200;
		mFullscreenSize.h	= 640;
		mFullscreenSize.v	= 480;
		mFullscreenDepth	= 8;
		mFullscreenDevice	= 0;
		mMaxSize.h			= 30000;
		mMaxSize.v			= 360;
		mTrackTextPosMode	= 5;
		mTrackTextSize		= 18;
		mNormalizeInput		= false;
		mNewConfigNotify	= false;
		mParticlesOn		= true;
		mKeyMap					.Assign( "TLRY`SNGFZXCQWE,.M[]{}P******!@#$%^&*()1234567890" );
		mFieldIntervalStr		.Assign( "18 + rnd( 15 )" );
		mColorIntervalStr		.Assign( "10 + rnd( 15 )" );
		mShapeIntervalStr		.Assign( "10 + rnd( 15 )" );
		mTrackFont				.Assign( __defaultFont );
		mTrackTextStartStr		.Assign( "4 + LAST_SONG_START - t" );
		mTrackTextDurationStr	.Assign( "5" );
		mTrackMetaText			.Assign( __defaultTTFormat );
		mParticleDuration		.Assign( "8 + rnd( 15 )" );
		mParticleProbability	.Assign( ".09/((NUM_PARTICLES+1)^1.66)" );


		// Show the welcome msg for a pref rewrite...
		Println( GFORCE_VERS_STR );
		Println( "Press '?' for help" );
	}
	else {
		mConsoleDelay       = mPrefs.GetPref( VAL('C','D','u','r') );
		mConsoleLineDur     = mPrefs.GetPref( VAL('C','L','i','n') );
		mMagScale           = mPrefs.GetPref( VAL('M','S','c','l') ) / 1000.0;
		mTransitionLo       = mPrefs.GetPref( VAL('T','r','L','o') );
		mTransitionHi       = mPrefs.GetPref( VAL('T','r','H','i') );
		mScrnSaverDelay     = mPrefs.GetPref( VAL('S','S','v','r') ) * 60.0;
		mBorderlessWind     = mPrefs.GetPref( VAL('N','o','B','o') );
		mHandleKeys         = mPrefs.GetPref( VAL('K','y','b','d') );
		mNum_S_Steps        = mPrefs.GetPref( VAL('S','t','p','s') );
		mFullscreenSize.h   = mPrefs.GetPref( VAL('F','S','_','X') );
		mFullscreenSize.v   = mPrefs.GetPref( VAL('F','S','_','Y') );
		mFullscreenDepth    = mPrefs.GetPref( VAL('F','S','_','D') );
		mFullscreenDevice   = mPrefs.GetPref( VAL('F','S','_','#') );
		mParticlesOn        = mPrefs.GetPref( VAL('P','_','O','n') );
		mNormalizeInput     = mPrefs.GetPref( VAL('N','o','r','m') );
		mMaxSize.v          = mPrefs.GetPref( VAL('M','a','x','Y') );
		mMaxSize.h          = mPrefs.GetPref( VAL('M','a','x','X') );
		mNewConfigNotify    = mPrefs.GetPref( VAL('S','h','w','T') );
		mTrackTextPosMode   = mPrefs.GetPref( VAL('T','P','o','s') );
		mTrackTextSize      = mPrefs.GetPref( VAL('T','S','z','e') );
		mPrefs.GetPref( VAL('W','I','n','t'), mShapeIntervalStr );
		mPrefs.GetPref( VAL('D','I','n','t'), mFieldIntervalStr );
		mPrefs.GetPref( VAL('C','I','n','t'), mColorIntervalStr );
		mPrefs.GetPref( VAL2('T','?'), mTrackTextStartStr );
		mPrefs.GetPref( VAL('T','D','u','r'), mTrackTextDurationStr );
		mPrefs.GetPref( VAL('T','F','n','t'), mTrackFont );
		mPrefs.GetPref( VAL('T','S','t','r'), mTrackMetaText );
		mPrefs.GetPref( VAL('P','D','u','r'), mParticleDuration );
		mPrefs.GetPref( VAL('P','P','r','b'), mParticleProbability );
		mPrefs.GetPref( VAL('K','M','a','p'), mKeyMap );
	}

	mPortA.SetTrackTextFont( mTrackFont, mTrackTextSize );
	mPortB.SetTrackTextFont( mTrackFont, mTrackTextSize );

	// Catch any bad values for mNumSampleBins
	if ( mNum_S_Steps < 1 || mNum_S_Steps > 10000 )
		mNum_S_Steps = 320;


	mNum_FFT_Steps = 256;

	// Alloc/setup the data we'll have our virtual machines accessing...
	SetNumSampleBins( mNum_S_Steps );
	SetNumFFTBins( mNum_FFT_Steps );

	// Setup waveshape members
	mWave1.SetMagFcn( (ExprUserFcn**) &mSampleFcn );
	mWave2.SetMagFcn( (ExprUserFcn**) &mSampleFcn );

	// FIXME, use FFT data here
	mWave1.SetFFTFcn( (ExprUserFcn**) &mFFTFcn );
	mWave2.SetFFTFcn( (ExprUserFcn**) &mFFTFcn );

	// Init particle stuff
	mDict.AddVar( "T", &mT );
	mDict.AddVar( "LAST_PARTICLE_START", &mLastParticleStart );
	mDict.AddVar( "NUM_PARTICLES", &mNumRunningParticles );
	mNumRunningParticles = 0;
	mNextParticleCheck = mT + 1;
	mParticleProbabilityFcn.Compile( mParticleProbability, mDict );
	mParticleDurationFcn.Compile( mParticleDuration, mDict );
	mShapeInterval.Compile( mShapeIntervalStr, mDict );
	mColorInterval.Compile( mColorIntervalStr, mDict );
	mFieldInterval.Compile( mFieldIntervalStr, mDict );

	// Track Text stuff
	mDict.AddVar( "LAST_SONG_START", &mLastSongStart );
	mTrackTextStartFcn.Compile( mTrackTextStartStr, mDict );
	mTrackTextDurFcn.Compile( mTrackTextDurationStr, mDict );

	// Transition bookkeeping
	mColorTransTime		= -1;
	mShapeTransTime		= -1;
	mGF_Palette			= 0;
	mWave				= 0;


	// Look in G-Force's support folders and see what we have to select from...
	BuildConfigLists();

	mField		= &mField1;
	mNextField	= &mField2;

	for ( int i = 0; i < 4; i++ )
		mCurKeys[ i ] = 0;
}