new matrix allocation mechanism
This commit is contained in:
24
draw.c
24
draw.c
@@ -13,22 +13,22 @@ vector_t cross(vector_t a, vector_t b)
|
||||
|
||||
vector_t apply(DrawingContext *ctx, gsl_matrix *m, vector_t x)
|
||||
{
|
||||
gsl_vector *tmp = getTempVector(ctx);
|
||||
gsl_vector *tmp2 = getTempVector(ctx);
|
||||
gsl_vector *tmp = getTempVector(ctx->ws);
|
||||
gsl_vector *tmp2 = getTempVector(ctx->ws);
|
||||
vector_t out;
|
||||
|
||||
LOOP(i) gsl_vector_set(tmp, i, x.x[i]);
|
||||
gsl_blas_dgemv(CblasNoTrans, 1.0, m, tmp, 0.0, tmp2);
|
||||
LOOP(i) out.x[i] = gsl_vector_get(tmp2, i);
|
||||
|
||||
releaseTempVectors(ctx, 2);
|
||||
releaseTempVectors(ctx->ws, 2);
|
||||
}
|
||||
|
||||
int fixedPoints(DrawingContext *ctx, const char *word, vector_t *out)
|
||||
{
|
||||
gsl_matrix *tmp = getTempMatrix(ctx);
|
||||
gsl_matrix *ev = getTempMatrix(ctx);
|
||||
gsl_matrix **gen = getTempMatrices(ctx, 3);
|
||||
gsl_matrix *tmp = getTempMatrix(ctx->ws);
|
||||
gsl_matrix *ev = getTempMatrix(ctx->ws);
|
||||
gsl_matrix **gen = getTempMatrices(ctx->ws, 3);
|
||||
|
||||
initializeTriangleGenerators(gen, ctx->cartan);
|
||||
|
||||
@@ -42,16 +42,16 @@ int fixedPoints(DrawingContext *ctx, const char *word, vector_t *out)
|
||||
|
||||
LOOP(i) LOOP(j) out[i].x[j] = gsl_matrix_get(ev, j, i);
|
||||
|
||||
releaseTempMatrices(ctx, 5);
|
||||
releaseTempMatrices(ctx->ws, 5);
|
||||
|
||||
return count;
|
||||
}
|
||||
|
||||
void transformFrameStd(DrawingContext *ctx, vector_t *x, gsl_matrix *out)
|
||||
{
|
||||
gsl_matrix *tmp = getTempMatrix(ctx);
|
||||
gsl_vector *fourth = getTempVector(ctx);
|
||||
gsl_vector *lambda = getTempVector(ctx);
|
||||
gsl_matrix *tmp = getTempMatrix(ctx->ws);
|
||||
gsl_vector *fourth = getTempVector(ctx->ws);
|
||||
gsl_vector *lambda = getTempVector(ctx->ws);
|
||||
int s;
|
||||
|
||||
LOOP(i) LOOP(j) gsl_matrix_set(out, j, i, x[i].x[j]);
|
||||
@@ -63,8 +63,8 @@ void transformFrameStd(DrawingContext *ctx, vector_t *x, gsl_matrix *out)
|
||||
|
||||
gsl_matrix_fprintf(stdout, out, "%f");
|
||||
|
||||
releaseTempMatrices(ctx, 1);
|
||||
releaseTempVectors(ctx, 2);
|
||||
releaseTempMatrices(ctx->ws, 1);
|
||||
releaseTempVectors(ctx->ws, 2);
|
||||
}
|
||||
|
||||
// level 1: the elementary drawing functions, drawPoint, drawSegment2d
|
||||
|
||||
Reference in New Issue
Block a user