2
$\begingroup$

It seems that a/b is always replaced with the form: a * b^-1, Times[a, Power[b, -1]]. I tried Hold, Unevaluated, HoldAll and this always happens.

Thus a/b /. {Times -> Minus} leads to a - b^-1 and any_expression /. {Divide -> Minus} is always unchanged

How can I replace Divide in a/b with Minus to get a-b?

$\endgroup$
3
  • 2
    $\begingroup$ How about: repl = Times[x_, Power[y_, -1]] -> x - y; . For testing: {a/b, c a/(b d)} //. repl $\endgroup$ Commented Dec 21, 2022 at 8:14
  • 3
    $\begingroup$ This was asked before few times, you need to use the FullForm of the expression. But why not just do the following: expr /. Numerator[expr]/Denominator[expr] -> Numerator[expr] - Denominator[expr] where expr is your rational expression you show. This way you do not have to worry about it. Is the above the only example you are looking to change or you have more complicated cases? !Mathematica graphics $\endgroup$ Commented Dec 21, 2022 at 8:14
  • 3
    $\begingroup$ Related: mathematica.stackexchange.com/q/84908/1871 $\endgroup$ Commented Dec 21, 2022 at 8:37

1 Answer 1

6
$\begingroup$

I won't be surprised if there's a duplicate for this, but I can't find it, so let me write an answer. The following solution works on toy examples, but semanic-matching problem usually need to be studied case by case, so don't be surprised if it doesn't work well on your real problem:

divide…to…minus[expr_] := ToBoxes@expr /. FractionBox[a_, b_] :> RowBox[{a, "-", b}] // ToExpression (a d)/(b c) // divide…to…minus (* -b c + a d *) 

See the posts under the tag for more info.

$\endgroup$
0

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.