Exemplo n.º 1
0
#include "core.h"
#include "core/FastFloat.h"
#include "core/MathDefs.h"


///////////////////////////////////////////////////////////////////////////////

FastFloat g_floatConstants[FloatMathConst_MAX] =
{
   FLOAT_CONSTANT( 0.0f ),
   FLOAT_CONSTANT( 1.0f ),
   FLOAT_CONSTANT( 2.0f ),
   FLOAT_CONSTANT( 3.0f ),
   FLOAT_CONSTANT( 4.0f ),
   FLOAT_CONSTANT( 5.0f ),
   FLOAT_CONSTANT( 6.0f ),
   FLOAT_CONSTANT( 7.0f ),
   FLOAT_CONSTANT( 8.0f ),
   FLOAT_CONSTANT( 9.0f ),

   FLOAT_CONSTANT( -1.0f ),
   FLOAT_CONSTANT( -2.0f ),

   FLOAT_CONSTANT( 0.1f ),
   FLOAT_CONSTANT( 0.01f ),
   FLOAT_CONSTANT( 0.001f ),
   FLOAT_CONSTANT( 0.0001f ),
   FLOAT_CONSTANT( -0.1f ),
   FLOAT_CONSTANT( -0.01f ),
   FLOAT_CONSTANT( -0.001f ),
   FLOAT_CONSTANT( -0.0001f ),
Exemplo n.º 2
0
    node_t* get_program() const
    {
        expanded_columns_t*expanded_columns = expanded_columns_new(dataset);

        assert(kernel);
        assert(params.svm_type == CvSVM::C_SVC);
        assert(params.kernel_type == CvSVM::LINEAR);

        int var_count = get_var_count();
        int class_count = this->dataset->desired_response->num_classes;

        assert(var_count == expanded_columns->num);
        assert(class_labels->cols == class_count);

        START_CODE(program)
        BLOCK

        INSERT_NODE(expanded_columns_parameter_init(expanded_columns));

        if(class_count == 2) {
            IF
                GT
                    INSERT_NODE(compare_classes(0,1,expanded_columns));
                    FLOAT_CONSTANT(0.0);
                END;
            THEN
                GENERIC_CONSTANT(dataset->desired_response->classes[0]);
            ELSE
                GENERIC_CONSTANT(dataset->desired_response->classes[1]);
            END;
        } else {
            int vote_offset = 0;
            int i;
            for(i = 0; i < class_count; i++) {
                SETLOCAL(vote_offset+i)
                    INT_CONSTANT(0);
                END;
            }

            for(i=0; i<class_count; i++) {
                int j;
                for(j=i+1; j<class_count; j++) {
                    IF
                        GT
                            INSERT_NODE(compare_classes(i,j,expanded_columns));
                            FLOAT_CONSTANT(0.0);
                        END;
                    THEN
                        INCLOCAL(vote_offset + i)
                    ELSE
                        INCLOCAL(vote_offset + j)
                    END;
                }
            }

            ARRAY_AT_POS
                ARRAY_CONSTANT(dataset_classes_as_array(dataset));
                ARG_MAX_I
                    int j;
                    for(j=0; j<class_count; j++) {
                        GETLOCAL(vote_offset+j);
                    }
                END;
            END;
        }

        END;
        END_CODE;

        expanded_columns_destroy(expanded_columns);

        return program;
    }