| 515 | } |
| 516 | |
| 517 | double DeepPolySoftmaxElement::dLSEUpperbound( const Vector<double> &inputMids, |
| 518 | const Vector<double> &outputLb, |
| 519 | const Vector<double> &outputUb, |
| 520 | unsigned i, |
| 521 | unsigned di ) |
| 522 | { |
| 523 | double li = outputLb[i]; |
| 524 | double ui = outputUb[i]; |
| 525 | |
| 526 | double val = -( ui - li ) / ( std::log( ui ) - std::log( li ) ); |
| 527 | |
| 528 | double val2 = std::exp( inputMids[di] ) / SoftmaxConstraint::sumOfExponential( inputMids ); |
| 529 | if ( i == di ) |
| 530 | val2 -= 1; |
| 531 | |
| 532 | return val * val2; |
| 533 | } |
| 534 | |
| 535 | double DeepPolySoftmaxElement::ERLowerBound( const Vector<double> &inputs, |
| 536 | const Vector<double> &inputLbs, |
nothing calls this directly
no outgoing calls
no test coverage detected