Paravartya Yojayet â Advanced Division with Transpose and Apply
In this tutorial, you'll learn about Paravartya Yojayet. We cover key concepts, practical examples, and best practices.
Paravartya Yojayet (Transpose and Apply) transforms division into a pattern of multiplication and addition by transposing the divisor's digits after the first. It works brilliantly for polynomial synthetic division and for dividing by numbers close to a base.
What you'll learn: Paravartya for polynomial synthetic division and numerical division by numbers above or below a base.
Why it matters: Paravartya eliminates long division â you compute quotient digits by simple multiply-and-add, exactly like synthetic division taught in algebra courses.
Real-world use: Computer algebra systems use synthetic division for polynomial root-finding; competitive exam takers divide large numbers in under 10 seconds; error-correction codes use transpose patterns for fast syndrome computation.
The Sutra: Transpose and Apply
"Paravartya Yojayet" means transpose (change the sign) and apply (multiply and add). The core idea:
- For a divisor D = Base Âą d, take the FIRST digit of the divisor and keep it.
- Transpose (flip the sign of) all remaining digits.
- Write the dividend with a separator after k digits (where k is the number of digits in Base minus 1, or the number of digits after the first in the divisor). Wait â let me be precise about this.
For Polynomial Division (Synthetic Division)
Given P(x) Ãˇ (x â a):
- Write the coefficients of P(x) in order.
- Write the root a (the transposed form of âa).
- Bring down the first coefficient.
- Multiply by a, add to the next coefficient. Repeat.
For Numerical Division (Near a Base)
Given N Ãˇ D where D = B Âą d (B is a power-of-10 base):
- Separate the dividend N: retain k digits on the right for the remainder, where B = 10^k.
- The transposed(flipped) deviation is âd (if D = B + d, use âd; if D = B â d, use +d).
- Bring down the first digit(s) of the left part, multiply by the TD, add to the next position on the right.
- Continue until no digits remain. The left part is the quotient; the right part is the remainder (adjust if negative).
The Division Flow
flowchart TD
A["Division problem
P(x) Ãˇ (x â a)"] --> B["Write coefficients of P(x)
and root a (transposed)"]
B --> C["Bring down first
coefficient"]
C --> D["Multiply by a, add to
next coefficient"]
D --> E{"All coefficients
processed?"}
E -- No --> F["Use result as new
multiplier"]
F --> D
E -- Yes --> G["Last value = remainder
All others = quotient coefficients"]
G --> H["Write quotient polynomial
+ remainder"]
style A fill:#1a73e8,color:#fff,stroke:none
style B fill:#34a853,color:#fff,stroke:none
style C fill:#fbbc04,color:#333,stroke:none
style D fill:#ea4335,color:#fff,stroke:none
style E fill:#ab47bc,color:#fff,stroke:none
style G fill:#46bdc6,color:#fff,stroke:none
style H fill:#1a73e8,color:#fff,stroke:none
Worked Examples: Polynomial Division
Example 1: xÂŗ + 2x² + 3x + 4 Ãˇ (x â 1)
This is the classic synthetic division. The divisor (x â 1) has root a = 1.
Coefficients: [1, 2, 3, 4], root = 1.
1 2 3 4
1
âââââ
1 â bring down
Step 1: Multiply 1 Ã 1 = 1, add to 2: 2 + 1 = 3.
1 2 3 4
1 1 â 1 Ã 1
âââââ
1 3 â 2 + 1
Step 2: Multiply 3 Ã 1 = 3, add to 3: 3 + 3 = 6.
1 2 3 4
1 1 3 â 3 Ã 1
âââââ
1 3 6 â 3 + 3
Step 3: Multiply 6 Ã 1 = 6, add to 4: 4 + 6 = 10.
1 2 3 4
1 1 3 6 â 6 Ã 1
âââââ
1 3 6 10 â 4 + 6
Answer: Quotient = 1x² + 3x + 6, Remainder = 10.
Check: (x â 1)(x² + 3x + 6) + 10 = xÂŗ + 2x² + 3x + 4 â
Example 2: 2xÂŗ + 5x² â 3x + 7 Ãˇ (x + 2)
Divisor (x + 2) has root a = â2.
Coefficients: [2, 5, â3, 7], root = â2.
2 5 â3 7
â2
âââââ
2 â bring down
Step 1: 2 Ã (â2) = â4, add to 5: 5 + (â4) = 1.
2 5 â3 7
â2 â4 â 2 Ã (â2)
âââââ
2 1 â 5 + (â4)
Step 2: 1 Ã (â2) = â2, add to â3: â3 + (â2) = â5.
2 5 â3 7
â2 â4 â2 â 1 Ã (â2)
âââââ
2 1 â5 â â3 + (â2)
Step 3: â5 Ã (â2) = 10, add to 7: 7 + 10 = 17.
2 5 â3 7
â2 â4 â2 10 â â5 Ã (â2)
âââââ
2 1 â5 17 â 7 + 10
Answer: Quotient = 2x² + x â 5, Remainder = 17.
Check: (x + 2)(2x² + x â 5) + 17 = 2xÂŗ + 5x² â 3x + 7 â
Example 3: 3xÂŗ â 2x² + 0x + 5 Ãˇ (x â 3)
Root a = 3. Note the zero coefficient for the missing x term.
3 â2 0 5
3
âââââ
3 â bring down
Step 1: 3 Ã 3 = 9, add to â2: â2 + 9 = 7.
3 â2 0 5
3 9 â 3 Ã 3
âââââ
3 7 â â2 + 9
Step 2: 7 Ã 3 = 21, add to 0: 0 + 21 = 21.
3 â2 0 5
3 9 21 â 7 Ã 3
âââââ
3 7 21 â 0 + 21
Step 3: 21 Ã 3 = 63, add to 5: 5 + 63 = 68.
3 â2 0 5
3 9 21 63 â 21 Ã 3
âââââ
3 7 21 68 â 5 + 63
Answer: Quotient = 3x² + 7x + 21, Remainder = 68.
Check: (x â 3)(3x² + 7x + 21) + 68 = 3xÂŗ + 7x² + 21x â 9x² â 21x â 63 + 68 = 3xÂŗ â 2x² + 5 â
Worked Examples: Numerical Division
Example 4: 1345 Ãˇ 103 (Divisor above base)
103 = 100 + 3. The transposed deviation = â3 (flip the sign of the deviation +3). Base = 100, k = 2.
Separate the dividend: 13 | 45.
This works algebraically: N = Q Ã B + R_initial. The Paravartya algorithm adjusts R_initial by subtracting Q Ã d.
Step 1: q = 13 (the left part as a number). Step 2: R_temp = right_part â q à d = 45 â 13 à 3 = 45 â 39 = 6. Step 3: Since 6 âĨ 0 and 6 < 103, we're done.
Answer: Q = 13, R = 6.
Check: 13 Ã 103 + 6 = 1339 + 6 = 1345 â
Example 5: 1400 Ãˇ 105 (Divisor above base, requires adjustment)
105 = 100 + 5, TD = â5, Base = 100, k = 2.
Separate: 14 | 00.
Step 1: q = 14, R_temp = 00 â 14 Ã 5 = 0 â 70 = â70.
Step 2: R_temp is negative. Borrow 1 from the quotient (reduce q by 1): q = 13. Add the divisor D to R_temp: R = â70 + 105 = 35.
Answer: Q = 13, R = 35.
Check: 13 Ã 105 + 35 = 1365 + 35 = 1400 â
Example 6: 1500 Ãˇ 103 (Above base, verify)
103 = 100 + 3, TD = â3.
Separate: 15 | 00.
Step 1: q = 15, R_temp = 00 â 15 Ã 3 = â45.
Step 2: R_temp negative. Borrow 1: q = 14, R = â45 + 103 = 58.
Answer: Q = 14, R = 58.
Check: 14 Ã 103 + 58 = 1442 + 58 = 1500 â
Example 7: 1203 Ãˇ 99 (Divisor BELOW base â uses Nikhilam, not Paravartya)
For completeness: when the divisor is BELOW the base, use the Nikhilam Sutra (add, not subtract).
99 = 100 â 1, so the deviation is +1 (we use +d, the positive deviation).
Separate: 12 | 03.
Step 1: q = 12, R_temp = 03 + 12 Ã 1 = 3 + 12 = 15.
Step 2: Is 15 < 99? Yes. Done.
Answer: Q = 12, R = 15.
Check: 12 Ã 99 + 15 = 1188 + 15 = 1203 â
Code Snippet: Python Implementation
def paravartya_polynomial(coefficients, root):
"""
Synthetic division of polynomial by (x - root) using Paravartya Yojayet.
Returns (quotient_coefficients, remainder).
"""
quotient = [coefficients[0]]
for i in range(1, len(coefficients)):
next_val = quotient[-1] * root + coefficients[i]
quotient.append(next_val)
remainder = quotient.pop()
return quotient, remainder
def paravartya_numerical(dividend, divisor):
"""
Divide using Paravartya (for divisors above base) or Nikhilam (below base).
Returns (quotient, remainder).
"""
base = 10 ** len(str(divisor))
if divisor > base:
# Paravartya: divisor above base
d = divisor - base # positive deviation
k = len(str(base)) - 1
divisor_str = str(dividend)
if len(divisor_str) <= k:
return 0, dividend
left_str = divisor_str[:-k] if k > 0 else divisor_str
right_str = divisor_str[-k:] if k > 0 else ''
left = int(left_str) if left_str else 0
right = int(right_str) if right_str else 0
q = left
r = right - q * d
while r < 0:
q -= 1
r += divisor
return q, r
else:
# Nikhilam: divisor below base
d = base - divisor
k = len(str(base)) - 1
divisor_str = str(dividend)
if len(divisor_str) <= k:
return 0, dividend
left_str = divisor_str[:-k] if k > 0 else divisor_str
right_str = divisor_str[-k:] if k > 0 else ''
left = int(left_str) if left_str else 0
right = int(right_str) if right_str else 0
q = left
r = right + q * d
while r >= divisor:
q += r // divisor
r = r % divisor
return q, r
tests_poly = [
([1, 2, 3, 4], 1, "xÂŗ + 2x² + 3x + 4 Ãˇ (x - 1)"),
([2, 5, -3, 7], -2, "2xÂŗ + 5x² - 3x + 7 Ãˇ (x + 2)"),
([3, -2, 0, 5], 3, "3xÂŗ - 2x² + 5 Ãˇ (x - 3)"),
]
for coeffs, root, desc in tests_poly:
q, r = paravartya_polynomial(coeffs, root)
print(f"{desc}")
print(f" Quotient: {q}, Remainder: {r}")
print()
tests_num = [(1345, 103), (1400, 105), (1500, 103), (1203, 99)]
for n, d in tests_num:
q, r = paravartya_numerical(n, d)
print(f"{n} Ãˇ {d} = {q} remainder {r} (expected: {n // d} r {n % d})")
Expected output:
xÂŗ + 2x² + 3x + 4 Ãˇ (x - 1)
Quotient: [1, 3, 6], Remainder: 10
2xÂŗ + 5x² - 3x + 7 Ãˇ (x + 2)
Quotient: [2, 1, -5], Remainder: 17
3xÂŗ - 2x² + 5 Ãˇ (x - 3)
Quotient: [3, 7, 21], Remainder: 68
1345 Ãˇ 103 = 13 remainder 6
1400 Ãˇ 105 = 13 remainder 35
1500 Ãˇ 103 = 14 remainder 58
1203 Ãˇ 99 = 12 remainder 15
Code Snippet: JavaScript Implementation
function paravartyaPoly(coefficients, root) {
const quotient = [coefficients[0]];
for (let i = 1; i < coefficients.length; i++) {
quotient.push(quotient[quotient.length - 1] * root + coefficients[i]);
}
const remainder = quotient.pop();
return { quotient, remainder };
}
function paravartyaNumerical(dividend, divisor) {
const base = Math.pow(10, String(divisor).length);
const k = String(base).length - 1;
const divisorStr = String(dividend);
if (divisorStr.length <= k) return { q: 0, r: dividend };
const left = parseInt(divisorStr.slice(0, -k) || '0');
const right = parseInt(divisorStr.slice(-k) || '0');
if (divisor > base) {
const d = divisor - base;
let q = left;
let r = right - q * d;
while (r < 0) { q--; r += divisor; }
return { q, r };
} else {
const d = base - divisor;
let q = left;
let r = right + q * d;
while (r >= divisor) {
q += Math.floor(r / divisor);
r = r % divisor;
}
return { q, r };
}
}
console.log(paravartyaPoly([1, 2, 3, 4], 1));
console.log(paravartyaNumerical(1345, 103));
Common Errors
Confusing the sign for Paravartya vs Nikhilam. Paravartya (divisor above base) uses subtraction: R_temp = right â q à d. Nikhilam (divisor below base) uses addition: R_temp = right + q à d. Mix them up and every answer will be wrong.
Forgetting to pad the separator. For base 100, k = 2 digits on the right. For 1345, separate as 13|45, not 134|5. A wrong separator position corrupts the result.
Not handling negative remainders. If R_temp is negative, borrow 1 from the quotient (q â â1) and add the divisor D to the remainder. Keep borrowing until the remainder is positive.
Applying numerical Paravartya to numbers not near a base. If the divisor is far from a power of 10 (like 87 or 214), this method becomes inefficient. Use long division or the general polynomial method instead.
Skipping zero coefficients in polynomial division. For 3xÂŗ â 2x² + 5, the x term has coefficient 0. Omitting it gives [3, â2, 5] â but this shifts all positions. Always write [3, â2, 0, 5].
Confusing polynomial and numerical methods. The polynomial method uses the ROOT (a from x â a). The numerical method uses the DEVIATION (d from D = B Âą d). Different inputs, different signs.
Forgetting to check that R < D. If the remainder is still âĨ divisor after the initial calculation, continue adjusting by adding to the quotient. The remainder must always be less than the divisor.
Practice Questions
- xÂŗ + 4x² â x + 6 Ãˇ (x â 2) = ?
- 2xâ´ + 3xÂŗ â x² + 2x â 5 Ãˇ (x + 1) = ?
- 1825 Ãˇ 105 = ? (use Paravartya)
- 2400 Ãˇ 98 = ? (use Nikhilam)
- 3100 Ãˇ 103 = ? (Paravartya with adjustment)
Answers:
- Q = x² + 6x + 11, R = 28
- Q = 2xÂŗ + x² â 2x + 4, R = â9... wait, let me recompute: [2, 3, -1, 2, -5] Ãˇ (x + 1), root = -1. 2 à (-1) + 3 = 1, 1 à (-1) + (-1) = -2, -2 à (-1) + 2 = 4, 4 à (-1) + (-5) = -9. Q = 2xÂŗ + x² â 2x + 4, R = â9. Or: (x+1)(2xÂŗ + x² â 2x + 4) â 9 = 2xâ´ + 3xÂŗ â x² + 2x â 5 â
- 1825 Ãˇ 105: 18|25, q=18, R_temp=25â18Ã5=25â90=â65, borrow: q=17, R=â65+105=40. Q=17, R=40. 17Ã105+40=1825 â
- 2400 Ãˇ 98: base=100, d=2, 24|00, q=24, R_temp=00+24Ã2=48. Q=24, R=48. 24Ã98+48=2400 â
- 3100 Ãˇ 103: 31|00, q=31, R_temp=00â31Ã3=â93, borrow: q=30, R=â93+103=10. Q=30, R=10. 30Ã103+10=3100 â
Mini Project: Multi-Method Division Calculator
Build a tool that detects the best division method:
def smart_division(dividend, divisor):
"""Choose the best Vedic division method."""
base = 10 ** len(str(divisor))
if abs(divisor - base) < base * 0.1:
if divisor > base:
print("Using Paravartya Yojayet (divisor above base)...")
else:
print("Using Nikhilam division (divisor below base)...")
q, r = paravartya_numerical(dividend, divisor)
else:
print("Using direct computation (divisor far from base)...")
q = dividend // divisor
r = dividend % divisor
print(f"{dividend} Ãˇ {divisor} = {q} remainder {r}")
print(f"Verify: {q} Ã {divisor} + {r} = {q * divisor + r}")
return q, r
test_cases = [(1345, 103), (2400, 98), (1825, 105), (5000, 237)]
for n, d in test_cases:
smart_division(n, d)
print()
FAQ
Next Steps
Continue with Sunyam Samasya â Advanced Vedic Techniques for more specialized Vedic sutras.
Related tutorials:
- Nikhilam â multiplication and division near powers of 10
- Urdhva Tiryagbhyam â vertically and crosswise multiplication
- Python â implement symbolic algebra with Paravartya
Built by the developers of Doda Browser, DodaZIP, and Durga Antivirus Pro.
Built by the developers of DodaTech
Doda Browser, DodaZIP & Durga Antivirus Pro