format 58
"math" // trunk::src::math
  revision 1
  modified_by 22 "zolee"
  // class settings
  //class diagram settings
  draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_members_multiplicity default show_members_initialization default member_max_width 0 show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default show_stereotype_properties default
  //use case diagram settings
  package_name_in_tab default show_context default auto_label_position default draw_all_relations default class_drawing_mode default shadow default show_stereotype_properties default
  //sequence diagram settings
  show_full_operations_definition default write_horizontally default class_drawing_mode default drawing_language default draw_all_relations default shadow default show_stereotype_properties default
  //collaboration diagram settings
  show_full_operations_definition default show_hierarchical_rank default write_horizontally default drawing_language default package_name_in_tab default show_context default draw_all_relations default shadow default show_stereotype_properties default
  //object diagram settings
   write_horizontally default package_name_in_tab default show_context default auto_label_position default draw_all_relations default shadow default show_stereotype_properties default
  //component diagram settings
  package_name_in_tab default show_context default auto_label_position default draw_all_relations default shadow default
  draw_component_as_icon default show_component_req_prov default show_component_rea default show_stereotype_properties default
  //deployment diagram settings
  package_name_in_tab default show_context default write_horizontally default auto_label_position default draw_all_relations default shadow default
  draw_component_as_icon default show_component_req_prov default show_component_rea default show_stereotype_properties default
  //state diagram settings
  package_name_in_tab default show_context default auto_label_position default write_trans_label_horizontally default show_trans_definition default draw_all_relations default shadow default
  show_activities default region_horizontally default drawing_language default show_stereotype_properties default
  //activity diagram settings
  package_name_in_tab default show_context default show_opaque_action_definition default auto_label_position default write_flow_label_horizontally default draw_all_relations default shadow default
  show_infonote default drawing_language default show_stereotype_properties default
  
  classview 130966 "math"
    //class diagram settings
    draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_members_multiplicity default show_members_initialization default member_max_width 0 show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default show_stereotype_properties default
    //collaboration diagram settings
    show_full_operations_definition default show_hierarchical_rank default write_horizontally default drawing_language default package_name_in_tab default show_context default draw_all_relations default shadow default show_stereotype_properties default
    //object diagram settings
     write_horizontally default package_name_in_tab default show_context default auto_label_position default draw_all_relations default shadow default show_stereotype_properties default
    //sequence diagram settings
    show_full_operations_definition default write_horizontally default class_drawing_mode default drawing_language default draw_all_relations default shadow default show_stereotype_properties default
    //state diagram settings
    package_name_in_tab default show_context default auto_label_position default write_trans_label_horizontally default show_trans_definition default draw_all_relations default shadow default
    show_activities default region_horizontally default drawing_language default show_stereotype_properties default
    //class settings
    //activity diagram settings
    package_name_in_tab default show_context default show_opaque_action_definition default auto_label_position default write_flow_label_horizontally default draw_all_relations default shadow default
    show_infonote default drawing_language default show_stereotype_properties default
    class 204438 "QuickVector"
      visibility package 
      cpp_decl "${comment}${template}class ${name}${inherit} {
${members}};
${inlines}
"
      java_decl ""
      php_decl ""
      python_2_2 python_decl ""
      idl_decl ""
      explicit_switch_type ""
      
      operation 731542 "QuickVector"
	preserve_cpp_body_indent public explicit_return_type ""
	nparams 1
	  param in name "m_in" explicit_type "CUI"
	cpp_decl "    ${comment}${inline}${name}${(}${t0} ${p0}${v0}${)}${volatile}${throw};
"
	cpp_def "// #####################################

${comment}${inline}${class}::${name}${(}${t0} ${p0}${)}
	: m(m_in), changed(true)
${throw}{
${body}}
"
	
	
	
	
      end

      operation 731670 "~QuickVector"
	preserve_cpp_body_indent public explicit_return_type ""
	nparams 0
	cpp_decl "    ${comment}${inline}${virtual}${name}${(}${)}${volatile}${throw};
"
	cpp_def "// #####################################

${comment}${inline}${class}::${name}${(}${)}${throw}{
${body}}
"
	
	
	
	
      end

      operation 731798 "QuickVector"
	preserve_cpp_body_indent public explicit_return_type ""
	nparams 1
	  param in name "old" type class_ref 204438 // QuickVector
	cpp_decl "    ${comment}${inline}${name}${(}const ${t0} * ${p0}${v0}${)}${volatile}${throw};
"
	cpp_def "// #####################################

${comment}${inline}${class}::${name}${(}const ${t0} * ${p0}${)}
	: m(old->m), changed(old->changed) ${throw}{
${body}}
"
	
	
	
	
      end

      operation 731926 "operator []"
	cpp_inline public explicit_return_type "double"
	nparams 1
	  param in name "i" explicit_type "int"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} & ${name}${(}const ${t0} ${p0}${v0}${)}${const}${volatile}${throw}${abstract} { changed = true; return values[i]; };
"
	
	
	
	
	comment " ye olde copy constructor."
      end

      operation 732054 "operator []"
	const cpp_inline public explicit_return_type "double"
	nparams 1
	  param in name "i" explicit_type "int"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}const ${t0} ${p0}${v0}${)}${const}${volatile}${throw}${abstract} { return values[i]; };
"
	
	
	
	
      end

      operation 732182 "at"
	preserve_cpp_body_indent const public explicit_return_type "double"
	nparams 1
	  param in name "m_a" explicit_type "CUI"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} ${p0}${v0}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "//
//#ifndef BADRNG_H
//#include \"badrng.h\"
//#endif
//
// ######################################

${comment}${inline}${type} ${class}::${name}${(}${t0} ${p0}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment " accessors
 we use accessors so that we can provide range checking.
 we use Smalltalk style naming conventions."
      end

      operation 732310 "atPut"
	preserve_cpp_body_indent public explicit_return_type "bool"
	nparams 2
	  param in name "m_a" explicit_type "CUI"
	  param in name "val" explicit_type "double"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} ${p0}${v0}, const ${t1} ${p1}${v1}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "// #####################################

${comment}${inline}${type} ${class}::${name}${(}${t0} ${p0}, const ${t1} ${p1}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 732438 "atAdd"
	preserve_cpp_body_indent public explicit_return_type "bool"
	nparams 2
	  param in name "m_a" explicit_type "CUI"
	  param in name "val" explicit_type "double"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} ${p0}${v0}, const ${t1} ${p1}${v1}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "// #####################################

${comment}${inline}${type} ${class}::${name}${(}${t0} ${p0}, const ${t1} ${p1}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 732566 "size"
	const cpp_inline public explicit_return_type "uint"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return m; };
"
	
	
	
	
      end

      operation 732694 "fillWithZeros"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "// #####################################
//
//void QuickVector::fillWithRandom() {
//	for(unsigned int j = 0; j < m; j++)
//		values[j] = drng();
//}
//
// #####################################

${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment " utility functions:
	void fillWithRandom();"
      end

      operation 732822 "swapElements"
	preserve_cpp_body_indent public explicit_return_type "bool"
	nparams 2
	  param in name "m_a" explicit_type "CUI"
	  param in name "m_b" explicit_type "CUI"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} ${p0}${v0}, ${t1} ${p1}${v1}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "// ####################################

${comment}${inline}${type} ${class}::${name}${(}${t0} ${p0}, ${t1} ${p1}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 732950 "operator ="
	preserve_cpp_body_indent public return_type class_ref 204438 // QuickVector
	nparams 1
	  param in name "y" type class_ref 204438 // QuickVector
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} & ${name}${(}const ${t0} & ${p0}${v0}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "// ###################################

${comment}${inline}${type} & ${class}::${name}${(}const ${t0} & ${p0}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment " Vector arithmetic."
      end

      operation 733078 "operator *="
	public return_type class_ref 204438 // QuickVector
	nparams 1
	  param in name "y" explicit_type "double"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} & ${name}${(}const ${t0} ${p0}${v0}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} & ${class}::${name}${(}const ${t0} ${p0}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 733206 "operator *="
	preserve_cpp_body_indent public return_type class_ref 204438 // QuickVector
	nparams 1
	  param in name "y" type class_ref 204438 // QuickVector
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} & ${name}${(}const ${t0} & ${p0}${v0}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "// ###################################

${comment}${inline}${type} & ${class}::${name}${(}const ${t0} & ${p0}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 733334 "operator +="
	preserve_cpp_body_indent public return_type class_ref 204438 // QuickVector
	nparams 1
	  param in name "y" type class_ref 204438 // QuickVector
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} & ${name}${(}const ${t0} & ${p0}${v0}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "// ###################################

${comment}${inline}${type} & ${class}::${name}${(}const ${t0} & ${p0}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 733462 "operator -"
	preserve_cpp_body_indent const public return_type class_ref 204438 // QuickVector
	nparams 1
	  param in name "y" type class_ref 204438 // QuickVector
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} & ${name}${(}const ${t0} & ${p0}${v0}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "// #####################################

${comment}${inline}${type} & ${class}::${name}${(}const ${t0} & ${p0}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 733590 "dumpToAux"
	preserve_cpp_body_indent const public explicit_return_type "void"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "// ####################################

${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment " debugging"
      end

      operation 733718 "isChanged"
	const cpp_inline public explicit_return_type "bool"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { return changed; };
"
	
	
	
	
	comment "*
	 * Returns true if the vector has changed since setUnchanged was last called
	 "
      end

      operation 733846 "setUnchanged"
	cpp_inline public explicit_return_type "void"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract} { changed=false; };
"
	
	
	
	
	comment "*
	 * Sets the changed status to false.
	 "
      end

      operation 733974 "QuickVector"
	cpp_inline private explicit_return_type ""
	nparams 0
	cpp_decl "    ${comment}${inline}${name}${(}${)}${volatile}${throw} {};
"
	
	
	
	
	comment " We don't have a default vector size so therefore we lock the default constructor."
      end

      attribute 347926 "m"
	private explicit_type "uint"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end

      attribute 348054 "changed"
	private explicit_type "bool"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end

      attribute 348182 "values"
	private explicit_type "double"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} * ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end
    end

    class 206486 "QuickMatrix"
      visibility package 
      cpp_decl "${comment}${template}class ${name}${inherit} {
${members}};
${inlines}
"
      java_decl ""
      php_decl ""
      python_2_2 python_decl ""
      idl_decl ""
      explicit_switch_type ""
      
      operation 727062 "QuickMatrix"
	preserve_cpp_body_indent public explicit_return_type ""
	nparams 2
	  param in name "m_in" explicit_type "CUI"
	  param in name "n_in" explicit_type "CUI"
	cpp_decl "    ${comment}${inline}${name}${(}${t0} ${p0}${v0}, ${t1} ${p1}${v1}${)}${volatile}${throw};
"
	cpp_def "// ####################################

${comment}${inline}${class}::${name}${(}${t0} ${p0}, ${t1} ${p1}${)}
	: m(m_in), n(n_in) ${throw}{
${body}}
"
	
	
	
	
      end

      operation 727190 "QuickMatrix"
	preserve_cpp_body_indent public explicit_return_type ""
	nparams 1
	  param in name "m_in" explicit_type "CUI"
	cpp_decl "    ${comment}${inline}${name}${(}${t0} ${p0}${v0}${)}${volatile}${throw};
"
	cpp_def "// ####################################

${comment}${inline}${class}::${name}${(}${t0} ${p0}${)}
	: m(m_in), n(m_in) ${throw}{
${body}}
"
	
	
	
	
      end

      operation 727318 "QuickMatrix"
	preserve_cpp_body_indent public explicit_return_type ""
	nparams 1
	  param in name "old" type class_ref 206486 // QuickMatrix
	cpp_decl "    ${comment}${inline}${name}${(}const ${t0} * ${p0}${v0}${)}${volatile}${throw};
"
	cpp_def "// ####################################

${comment}${inline}${class}::${name}${(}const ${t0} * ${p0}${)}
	: m(old->m), n(old->n) ${throw}{
${body}}
"
	
	
	
	
      end

      operation 727446 "~QuickMatrix"
	preserve_cpp_body_indent public explicit_return_type ""
	nparams 0
	cpp_decl "    ${comment}${inline}${virtual}${name}${(}${)}${volatile}${throw};
"
	cpp_def "// ####################################

${comment}${inline}${class}::${name}${(}${)}${throw}{
${body}}
"
	
	
	
	
	comment " ye olde copy constructor."
      end

      operation 727574 "at"
	preserve_cpp_body_indent const public explicit_return_type "double"
	nparams 2
	  param in name "m_a" explicit_type "CUI"
	  param in name "n_a" explicit_type "CUI"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} ${p0}${v0}, ${t1} ${p1}${v1}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "// ####################################

${comment}${inline}${type} ${class}::${name}${(}${t0} ${p0}, ${t1} ${p1}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment " accessors
 we use accessors so that we can provide range checking.
 we use Smalltalk style naming conventions."
      end

      operation 727702 "atPut"
	preserve_cpp_body_indent public explicit_return_type "bool"
	nparams 3
	  param in name "m_a" explicit_type "CUI"
	  param in name "n_a" explicit_type "CUI"
	  param in name "val" explicit_type "double"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} ${p0}${v0}, ${t1} ${p1}${v1}, const ${t2} ${p2}${v2}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "// ####################################

${comment}${inline}${type} ${class}::${name}${(}${t0} ${p0}, ${t1} ${p1}, const ${t2} ${p2}${)}${const}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 727830 "atAdd"
	preserve_cpp_body_indent public explicit_return_type "bool"
	nparams 3
	  param in name "m_a" explicit_type "CUI"
	  param in name "n_a" explicit_type "CUI"
	  param in name "val" explicit_type "double"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} ${p0}${v0}, ${t1} ${p1}${v1}, const ${t2} ${p2}${v2}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "// ####################################

${comment}${inline}${type} ${class}::${name}${(}${t0} ${p0}, ${t1} ${p1}, const ${t2} ${p2}${)}${const}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 727958 "isSquare"
	preserve_cpp_body_indent const public explicit_return_type "bool"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "//
//#ifndef BADRNG_H
//#include \"badrng.h\"
//#endif
//
// ####################################

${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment " just give a negative val to subtract. =)"
      end

      operation 728086 "operator []"
	cpp_inline public explicit_return_type "double"
	nparams 1
	  param in name "i" explicit_type "int"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} * & ${name}${(}const ${t0} ${p0}${v0}${)}${const}${volatile}${throw}${abstract} { return values[i]; };
"
	
	
	
	
      end

      operation 728214 "operator []"
	const cpp_inline public explicit_return_type "double"
	nparams 1
	  param in name "i" explicit_type "int"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}const ${type} * ${name}${(}const ${t0} ${p0}${v0}${)}${const}${volatile}${throw}${abstract} { return values[i]; };
"
	
	
	
	
      end

      operation 728342 "size_m"
	preserve_cpp_body_indent const public explicit_return_type "uint"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "// ####################################
// Ideally, this should be inlined, however I am reluctant to put code in the header files which may be included in numerous
// object files locations.

${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 728470 "size_n"
	preserve_cpp_body_indent const public explicit_return_type "uint"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "// ####################################

${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 728598 "scaleRow"
	preserve_cpp_body_indent public explicit_return_type "bool"
	nparams 2
	  param in name "m_a" explicit_type "CUI"
	  param in name "scalor" explicit_type "double"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} ${p0}${v0}, const ${t1} ${p1}${v1}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "// ####################################

${comment}${inline}${type} ${class}::${name}${(}${t0} ${p0}, const ${t1} ${p1}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment " functions for some elementary row operations.
 these are actually procedures because they operate on the current matrix rather than
 producing a results matrix.  "
      end

      operation 728726 "addRowToRow"
	public explicit_return_type "bool"
	nparams 2
	  param in name "m_a" explicit_type "CUI"
	  param in name "m_b" explicit_type "CUI"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} ${p0}${v0}, ${t1} ${p1}${v1}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${t0} ${p0}, ${t1} ${p1}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment " changes B by adding A."
      end

      operation 728854 "scaleAndAdd"
	preserve_cpp_body_indent public explicit_return_type "bool"
	nparams 3
	  param in name "m_a" explicit_type "CUI"
	  param in name "m_b" explicit_type "CUI"
	  param in name "scalor" explicit_type "double"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} ${p0}${v0}, ${t1} ${p1}${v1}, const ${t2} ${p2}${v2}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "// ####################################
// behaves oddly but doesn't crash if m_a == m_b

${comment}${inline}${type} ${class}::${name}${(}${t0} ${p0}, ${t1} ${p1}, const ${t2} ${p2}${)}${const}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment " changes B by adding the result of A times a scalor "
      end

      operation 728982 "partialScaleAndAdd"
	preserve_cpp_body_indent public explicit_return_type "bool"
	nparams 3
	  param in name "m_a" explicit_type "CUI"
	  param in name "m_b" explicit_type "CUI"
	  param in name "scalor" explicit_type "double"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} ${p0}${v0}, ${t1} ${p1}${v1}, const ${t2} ${p2}${v2}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "// ####################################
// behaves oddly but doesn't crash if m_a == m_b

${comment}${inline}${type} ${class}::${name}${(}${t0} ${p0}, ${t1} ${p1}, const ${t2} ${p2}${)}${const}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 729110 "partialSAF"
	preserve_cpp_body_indent public explicit_return_type "bool"
	nparams 4
	  param in name "m_a" explicit_type "CUI"
	  param in name "m_b" explicit_type "CUI"
	  param in name "from" explicit_type "CUI"
	  param in name "scalor" explicit_type "double"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} ${p0}${v0}, ${t1} ${p1}${v1}, ${t2} ${p2}${v2}, const ${t3} ${p3}${v3}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "// ########################################

${comment}${inline}${type} ${class}::${name}${(}${t0} ${p0}, ${t1} ${p1}, ${t2} ${p2}, const ${t3} ${p3}${)}${const}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 729238 "swapRows"
	preserve_cpp_body_indent public explicit_return_type "bool"
	nparams 2
	  param in name "m_a" explicit_type "CUI"
	  param in name "m_b" explicit_type "CUI"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} ${p0}${v0}, ${t1} ${p1}${v1}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "// ####################################

${comment}${inline}${type} ${class}::${name}${(}${t0} ${p0}, ${t1} ${p1}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 729366 "multstep"
	preserve_cpp_body_indent const public explicit_return_type "double"
	nparams 3
	  param in name "row" explicit_type "CUI"
	  param in name "pos" explicit_type "CUI"
	  param in name "col" explicit_type "CUI"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} ${p0}${v0}, ${t1} ${p1}${v1}, ${t2} ${p2}${v2}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "// ####################################

${comment}${inline}${type} ${class}::${name}${(}${t0} ${p0}, ${t1} ${p1}, ${t2} ${p2}${)}${const}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment " functions that accelerate certain types of
 operations that would otherwise require millions of at()'s"
      end

      operation 729494 "multRowCol"
	preserve_cpp_body_indent const public explicit_return_type "double"
	nparams 3
	  param in name "row" explicit_type "CUI"
	  param in name "col" explicit_type "CUI"
	  param in name "lim" explicit_type "CUI"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} ${p0}${v0}, ${t1} ${p1}${v1}, ${t2} ${p2}${v2}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "// ####################################

${comment}${inline}${type} ${class}::${name}${(}${t0} ${p0}, ${t1} ${p1}, ${t2} ${p2}${)}${const}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 729622 "transposeSquare"
	preserve_cpp_body_indent const public return_type class_ref 206486 // QuickMatrix
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} * ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "// ####################################

${comment}${inline}${type} * ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 729750 "transposeMult"
	preserve_cpp_body_indent const public return_type class_ref 204438 // QuickVector
	nparams 1
	  param in name "operandvec" type class_ref 204438 // QuickVector
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} * ${name}${(}const ${t0} * ${p0}${v0}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "// #####################################

${comment}${inline}${type} * ${class}::${name}${(}const ${t0} * ${p0}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment " Multiplies self by transpose."
      end

      operation 729878 "fillWithRandom"
	public explicit_return_type "void"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment " utility functions:"
      end

      operation 730006 "fillWithZero"
	preserve_cpp_body_indent public explicit_return_type "void"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "// ###################################

${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 730134 "rowsum"
	preserve_cpp_body_indent public explicit_return_type "double"
	nparams 1
	  param in name "m" explicit_type "CUI"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} ${p0}${v0}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "// ####################################

${comment}${inline}${type} ${class}::${name}${(}${t0} ${p0}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 730262 "absrowsum"
	preserve_cpp_body_indent public explicit_return_type "double"
	nparams 1
	  param in name "m" explicit_type "CUI"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} ${p0}${v0}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "// ####################################

${comment}${inline}${type} ${class}::${name}${(}${t0} ${p0}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 730390 "normalizeRows"
	preserve_cpp_body_indent public return_type class_ref 204438 // QuickVector
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} * ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "// ####################################
//
//void QuickMatrix::fillWithRandom() {
//	for(unsigned int j = 0; j < m; j++) {
//		double *row = values[j];
//		for(unsigned int i = 0; i < n; i++) row[i] = drng();
//	}
//}
//
// ####################################

${comment}${inline}${type} * ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 730518 "operator +="
	preserve_cpp_body_indent public return_type class_ref 206486 // QuickMatrix
	nparams 1
	  param in name "operandmat" type class_ref 206486 // QuickMatrix
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} * ${name}${(}const ${t0} * ${p0}${v0}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "// ####################################

${comment}${inline}${type} * ${class}::${name}${(}const ${t0} * ${p0}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment " Matrix arithmetic."
      end

      operation 730646 "operator *="
	public return_type class_ref 206486 // QuickMatrix
	nparams 1
	  param in name "y" explicit_type "double"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} * ${name}${(}const ${t0} ${p0}${v0}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "${comment}${inline}${type} * ${class}::${name}${(}const ${t0} ${p0}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 730774 "operator ="
	preserve_cpp_body_indent public return_type class_ref 206486 // QuickMatrix
	nparams 1
	  param in name "y" explicit_type "double"
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} * ${name}${(}const ${t0} ${p0}${v0}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "// ###################################
// sets the diagonal to a constant.

${comment}${inline}${type} * ${class}::${name}${(}const ${t0} ${p0}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 730902 "operator *"
	preserve_cpp_body_indent const public return_type class_ref 206486 // QuickMatrix
	nparams 1
	  param in name "operandmat" type class_ref 206486 // QuickMatrix
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} * ${name}${(}const ${t0} * ${p0}${v0}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "// ####################################

${comment}${inline}${type} * ${class}::${name}${(}const ${t0} * ${p0}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment " sets the diagonal to a constant.
	QuickMatrix *operator =(const QuickMatrix *oldmat);"
      end

      operation 731030 "operator *"
	preserve_cpp_body_indent const public return_type class_ref 204438 // QuickVector
	nparams 1
	  param in name "operandvec" type class_ref 204438 // QuickVector
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} * ${name}${(}const ${t0} * ${p0}${v0}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "// ####################################

${comment}${inline}${type} * ${class}::${name}${(}const ${t0} * ${p0}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      operation 731158 "dumpToAux"
	preserve_cpp_body_indent const public explicit_return_type "void"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "// ###################################

${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
	comment " debugging"
      end

      operation 731286 "QuickMatrix"
	cpp_inline private explicit_return_type ""
	nparams 0
	cpp_decl "    ${comment}${inline}${name}${(}${)}${volatile}${throw} {};
"
	
	
	
	
	comment " We don't have a default matrix size so therefore we lock the default constructor. "
      end

      operation 731414 "allocator"
	preserve_cpp_body_indent private explicit_return_type "void"
	nparams 0
	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract};
"
	cpp_def "// ####################################

${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{
  ${body}}
"
	
	
	
	
      end

      attribute 347798 "values"
	private explicit_type "double"
	cpp_decl "    ${comment}${static}${mutable}${volatile}${const}${type} * * ${name}${value};
"
	java_decl ""
	php_decl ""
	python_decl ""
	idl_decl ""
      end
    end
  end

  deploymentview 130838 "math"
    //deployment diagram settings
    package_name_in_tab default show_context default write_horizontally default auto_label_position default draw_all_relations default shadow default
    draw_component_as_icon default show_component_req_prov default show_component_rea default show_stereotype_properties default
    artifact 160918 "qmatrix"
      stereotype "source"
      cpp_h "#ifndef ${NAMESPACE}_${NAME}_H
#define ${NAMESPACE}_${NAME}_H

${comment}
${includes}
${declarations}
${namespace_start}
${definition}
${namespace_end}
#endif
"
      cpp_src "${comment}
${includes}
${namespace_start}
${members}
${namespace_end}"
      associated_classes
	class_ref 206486 // QuickMatrix
      end
    end

    artifact 161046 "qvector"
      stereotype "source"
      cpp_h "#ifndef ${NAMESPACE}_${NAME}_H
#define ${NAMESPACE}_${NAME}_H

${comment}
${includes}
${declarations}
${namespace_start}
${definition}
${namespace_end}
#endif
"
      cpp_src "${comment}
${includes}
${namespace_start}
${members}
${namespace_end}"
      associated_classes
	class_ref 204438 // QuickVector
      end
    end
  end
end
