src/HOL/Matrix/cplex/fspmlp.ML
changeset 23261 85f27f79232f
parent 22964 2284e0d02e7f
child 23297 06f108974fa1
equal deleted inserted replaced
23260:eb6d86fb7ed3 23261:85f27f79232f
   205         fun isnegstr x = String.isPrefix "-" x
   205         fun isnegstr x = String.isPrefix "-" x
   206         fun negstr x = if isnegstr x then String.extract (x, 1, NONE) else "-"^x
   206         fun negstr x = if isnegstr x then String.extract (x, 1, NONE) else "-"^x
   207 
   207 
   208         fun test_1 (lower, upper) =
   208         fun test_1 (lower, upper) =
   209             if lower = upper then
   209             if lower = upper then
   210                 (if Float.eq (lower, (Intt.int ~1, Intt.zero)) then ~1
   210                 (if Float.eq (lower, (Integer.int ~1, Integer.zero)) then ~1
   211                  else if Float.eq (lower, (Intt.int 1, Intt.zero)) then 1
   211                  else if Float.eq (lower, (Integer.int 1, Integer.zero)) then 1
   212                  else 0)
   212                  else 0)
   213             else 0
   213             else 0
   214 
   214 
   215         fun calcr (row_index, a) g =
   215         fun calcr (row_index, a) g =
   216             let
   216             let
   286                     val index = xlen-i
   286                     val index = xlen-i
   287                     val (r, (r12_1, r12_2)) = abs_estimate (i-1) r1 r2
   287                     val (r, (r12_1, r12_2)) = abs_estimate (i-1) r1 r2
   288                     val b1 = case Inttab.lookup r1 index of NONE => raise (Load ("x-value not bounded from below: "^(names index))) | SOME x => x
   288                     val b1 = case Inttab.lookup r1 index of NONE => raise (Load ("x-value not bounded from below: "^(names index))) | SOME x => x
   289                     val b2 = case Inttab.lookup r2 index of NONE => raise (Load ("x-value not bounded from above: "^(names index))) | SOME x => x
   289                     val b2 = case Inttab.lookup r2 index of NONE => raise (Load ("x-value not bounded from above: "^(names index))) | SOME x => x
   290                     val abs_max = Float.max (Float.neg (Float.negative_part b1)) (Float.positive_part b2)
   290                     val abs_max = Float.max (Float.neg (Float.negative_part b1)) (Float.positive_part b2)
   291                     val i' = Intt.int index
   291                     val i' = Integer.int index
   292                 in
   292                 in
   293                     (add_row_entry r i' abs_max, (add_row_entry r12_1 i' b1, add_row_entry r12_2 i' b2))
   293                     (add_row_entry r i' abs_max, (add_row_entry r12_1 i' b1, add_row_entry r12_2 i' b2))
   294                 end
   294                 end
   295         val (r, (r1, r2)) = abs_estimate xlen r1 r2
   295         val (r, (r1, r2)) = abs_estimate xlen r1 r2
   296     in
   296     in